feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(cli): attribute HTTP dispatches to CLI - #184

Merged
pandec merged 1 commit into
devfrom
feat/cli-event-origin
Sep 1, 2026
Merged

feat(cli): attribute HTTP dispatches to CLI#184
pandec merged 1 commit into
devfrom
feat/cli-event-origin

Conversation

@pandec

@pandecpandec commented Sep 1, 2026

Copy link
Copy Markdown
Owner

CLI commands dispatched over HTTP carried no origin, so events they produced were indistinguishable from unattributed clients. Upstream pingdotgg#8905 added "cli" to ClientSurface, which removed the schema-divergence reason for leaving them blank.

The HTTP orchestration dispatch route now stamps origin surface "cli" on plain, speech-request, and bootstrap dispatches. TurnStartBootstrap already forwards dispatch options, so thread creation, metadata updates, setup activities, the turn start, and failure cleanup all carry the attribution. The route's only caller is the fork CLI; web, desktop, and mobile keep their WebSocket connection-derived origins.

Rollback note: builds older than the 2026-09-01 sync cannot decode CLI-stamped events.

Tests: persisted-event origin asserted end to end through the real CLI/HTTP/engine path in bin.test.ts, plus option propagation across all six bootstrap commands in TurnStartBootstrap.test.ts.

Implemented by gpt-5.6-sol, reviewed by Claude Fable 5, orchestrated in Claude Code.

Summary by CodeRabbit

  • Improvements
    • CLI-initiated project setup and orchestration actions now consistently carry CLI origin information.
    • Bootstrap tasks, speech requests, and related dispatched operations are better identified as originating from the command-line interface.
    • CLI integration coverage has been expanded to verify origin tracking across project creation and startup workflows.
  • Bug Fixes
    • Corrected origin attribution for setup activity and cleanup dispatches initiated through CLI workflows.

@pandec

Copy link
Copy Markdown
OwnerAuthor

@coderabbitai full review

@coderabbitai

coderabbitaiBot commented Sep 1, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 82c57668-5635-4051-a4fb-fb7b663515a6

📥 Commits

Reviewing files that changed from the base of the PR and between 1af551d and 888e92c.

📒 Files selected for processing (3)
  • apps/server/src/bin.test.ts
  • apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
  • apps/server/src/orchestration/http.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The HTTP orchestration handler now attaches CLI origin metadata to dispatched commands. Tests verify origin propagation during CLI project creation and bootstrap turn-start handling.

Changes

CLI origin propagation

Layer / File(s)Summary
Propagate CLI origin through HTTP dispatch
apps/server/src/orchestration/http.ts, apps/server/src/orchestration/Services/TurnStartBootstrap.test.ts
HTTP dispatches pass { surface: "cli" } to bootstrap, speech-request, and regular orchestration paths. The bootstrap test uses CLI origin metadata.
Verify CLI origin in integration flow
apps/server/src/bin.test.ts
The live-server helper supports an injected turn-start dispatcher. Integration coverage verifies CLI origin metadata for project creation and bootstrap turn-start commands.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:🔵 Low · up to 888e9

The PR adds CLI attribution to persisted HTTP-dispatched events without broadening access, but events written by the new build may be unreadable by builds older than the September 1, 2026 contract sync. The change is mergeable with explicit rollout and rollback planning.

Sequence Diagram(s)

sequenceDiagram
participant CLI
participant HTTPDispatch
participant TurnStartBootstrap
participant OrchestrationEvents
CLI->>HTTPDispatch: create project and dispatch bootstrap turn-start
HTTPDispatch->>TurnStartBootstrap: dispatch with surface cli
TurnStartBootstrap->>OrchestrationEvents: record CLI origin metadata
OrchestrationEvents-->>CLI: project.created event with surface cli
Loading

Suggested reviewers:juliusmarminge, t3dotgg

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: attributing HTTP dispatches to the CLI surface.
Description check✅ PassedThe description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mos…
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains what changed, why the change is needed, test coverage, and rollback impact. It does not use the template headings or include the checklist, but the required information is mostly present and UI changes are not applicable.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3 files.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cli-event-origin

Comment @coderabbitai help to get the list of available commands.

@pandec
pandec merged commit 0db8cb0 into devSep 1, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pandec