@pellux/goodvibes-agent 1.1.7 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/CHANGELOG.md +170 -0
  2. package/README.md +46 -30
  3. package/dist/package/{ast-grep-napi.linux-x64-gnu-mkk8xwww.node → ast-grep-napi.linux-x64-gnu-swtppvy9.node} +0 -0
  4. package/dist/package/{ast-grep-napi.linux-x64-musl-ryqtgdv6.node → ast-grep-napi.linux-x64-musl-ttfcdtap.node} +0 -0
  5. package/dist/package/main.js +132577 -91483
  6. package/docs/README.md +14 -7
  7. package/docs/channels-remote-and-api.md +8 -5
  8. package/docs/connected-host.md +14 -12
  9. package/docs/getting-started.md +56 -30
  10. package/docs/knowledge-artifacts-and-multimodal.md +7 -5
  11. package/docs/project-planning.md +2 -2
  12. package/docs/providers-and-routing.md +11 -3
  13. package/docs/tools-and-commands.md +114 -45
  14. package/docs/voice-and-live-tts.md +3 -1
  15. package/package.json +3 -2
  16. package/release/release-notes.md +130 -5
  17. package/release/release-readiness.json +120 -90
  18. package/src/agent/assistant-cockpit.ts +247 -0
  19. package/src/agent/autonomy-schedule-format.ts +96 -0
  20. package/src/agent/autonomy-schedule.ts +514 -0
  21. package/src/agent/channel-delivery-receipts.ts +292 -0
  22. package/src/agent/competitive-feature-inventory.ts +296 -0
  23. package/src/agent/document-registry-types.ts +106 -0
  24. package/src/agent/document-registry.ts +734 -0
  25. package/src/agent/harness-control.ts +2 -2
  26. package/src/agent/memory-prompt.ts +2 -2
  27. package/src/agent/operator-actions.ts +50 -6
  28. package/src/agent/persona-registry.ts +8 -0
  29. package/src/agent/project-context-files.ts +273 -0
  30. package/src/agent/prompt-context-receipts.ts +502 -0
  31. package/src/agent/reminder-schedule-format.ts +16 -2
  32. package/src/agent/research-run-registry.ts +582 -0
  33. package/src/agent/research-source-registry.ts +441 -0
  34. package/src/agent/routine-registry.ts +19 -3
  35. package/src/agent/routine-schedule-format.ts +27 -2
  36. package/src/agent/runtime-profile-starters.ts +7 -0
  37. package/src/agent/runtime-profile.ts +106 -4
  38. package/src/agent/schedule-edit-format.ts +129 -0
  39. package/src/agent/schedule-edit.ts +496 -0
  40. package/src/agent/schedule-next-routes.ts +42 -0
  41. package/src/agent/setup-wizard-checkpoint.ts +140 -0
  42. package/src/agent/setup-wizard.ts +447 -0
  43. package/src/agent/skill-registry-types.ts +102 -0
  44. package/src/agent/skill-registry.ts +81 -107
  45. package/src/agent/vibe-confirmation-routes.ts +62 -0
  46. package/src/agent/vibe-file.ts +285 -0
  47. package/src/cli/agent-knowledge-command.ts +45 -2
  48. package/src/cli/help.ts +3 -0
  49. package/src/cli/profiles-command.ts +25 -11
  50. package/src/config/agent-settings-policy.ts +1 -18
  51. package/src/input/agent-workspace-activation.ts +53 -0
  52. package/src/input/agent-workspace-artifact-browser-editor.ts +494 -0
  53. package/src/input/agent-workspace-artifact-metadata.ts +17 -0
  54. package/src/input/agent-workspace-basic-command-editors.ts +5 -1
  55. package/src/input/agent-workspace-categories.ts +153 -155
  56. package/src/input/agent-workspace-channel-triage.ts +481 -0
  57. package/src/input/agent-workspace-channels.ts +263 -0
  58. package/src/input/agent-workspace-command-editor.ts +152 -0
  59. package/src/input/agent-workspace-context-snapshot.ts +349 -0
  60. package/src/input/agent-workspace-delegation-editor-submission.ts +8 -0
  61. package/src/input/agent-workspace-document-editor.ts +502 -0
  62. package/src/input/agent-workspace-document-ops-editor.ts +523 -0
  63. package/src/input/agent-workspace-host-category.ts +1 -1
  64. package/src/input/agent-workspace-local-library-snapshot.ts +167 -0
  65. package/src/input/agent-workspace-model-compare-editor.ts +376 -0
  66. package/src/input/agent-workspace-model-compare-prompt-submission.ts +552 -0
  67. package/src/input/agent-workspace-model-compare-types.ts +82 -0
  68. package/src/input/agent-workspace-model-compare-utils.ts +35 -0
  69. package/src/input/agent-workspace-onboarding-categories.ts +141 -0
  70. package/src/input/agent-workspace-operations-command-editor-submission.ts +53 -0
  71. package/src/input/agent-workspace-operations-command-editors.ts +22 -0
  72. package/src/input/agent-workspace-research-report-editor.ts +212 -0
  73. package/src/input/agent-workspace-research-run-editor.ts +144 -0
  74. package/src/input/agent-workspace-research-source-editor.ts +167 -0
  75. package/src/input/agent-workspace-review-packet-snapshot.ts +593 -0
  76. package/src/input/agent-workspace-review-packet-utils.ts +265 -0
  77. package/src/input/agent-workspace-settings.ts +262 -30
  78. package/src/input/agent-workspace-setup-checkpoint-action.ts +127 -0
  79. package/src/input/agent-workspace-setup-snapshot.ts +198 -0
  80. package/src/input/agent-workspace-setup.ts +34 -1
  81. package/src/input/agent-workspace-snapshot.ts +162 -147
  82. package/src/input/agent-workspace-types.ts +287 -2
  83. package/src/input/agent-workspace.ts +18 -0
  84. package/src/input/command-registry.ts +9 -2
  85. package/src/input/commands/agent-runtime-profile-runtime.ts +28 -13
  86. package/src/input/commands/channels-runtime.ts +102 -114
  87. package/src/input/commands/delegation-runtime.ts +87 -24
  88. package/src/input/commands/knowledge-browser-flags.ts +12 -0
  89. package/src/input/commands/knowledge.ts +28 -14
  90. package/src/input/commands/operator-actions-runtime.ts +6 -3
  91. package/src/input/commands/schedule-runtime.ts +71 -14
  92. package/src/input/commands/session-content.ts +2 -2
  93. package/src/input/commands/shell-core.ts +2 -0
  94. package/src/input/commands/vibe-runtime.ts +140 -0
  95. package/src/input/commands.ts +2 -0
  96. package/src/input/connected-host-routes.ts +123 -0
  97. package/src/input/settings-modal-types.ts +14 -0
  98. package/src/main.ts +15 -15
  99. package/src/panels/qr-panel.ts +2 -2
  100. package/src/renderer/agent-workspace-context-lines.ts +686 -0
  101. package/src/renderer/agent-workspace.ts +30 -419
  102. package/src/renderer/settings-modal-helpers.ts +12 -0
  103. package/src/renderer/settings-modal.ts +12 -0
  104. package/src/runtime/bootstrap-command-context.ts +11 -1
  105. package/src/runtime/bootstrap-command-parts.ts +14 -3
  106. package/src/runtime/bootstrap-core.ts +39 -1
  107. package/src/runtime/bootstrap-shell.ts +6 -0
  108. package/src/runtime/bootstrap.ts +113 -30
  109. package/src/runtime/connected-host-auth.ts +3 -2
  110. package/src/runtime/execution-ledger.ts +231 -0
  111. package/src/runtime/services.ts +88 -10
  112. package/src/runtime/tool-permission-safety.ts +199 -5
  113. package/src/shell/session-continuity-hints.ts +39 -0
  114. package/src/tools/agent-artifacts-tool.ts +606 -0
  115. package/src/tools/agent-audit-tool.ts +155 -0
  116. package/src/tools/agent-autonomy-schedule-tool.ts +238 -0
  117. package/src/tools/agent-autonomy-tool.ts +140 -0
  118. package/src/tools/agent-channel-send-tool.ts +24 -2
  119. package/src/tools/agent-channels-tool.ts +140 -0
  120. package/src/tools/agent-computer-tool.ts +168 -0
  121. package/src/tools/agent-context-policy.ts +137 -7
  122. package/src/tools/agent-context-tool.ts +143 -0
  123. package/src/tools/agent-delegation-tool.ts +128 -0
  124. package/src/tools/agent-device-tool.ts +240 -0
  125. package/src/tools/agent-documents-tool.ts +684 -0
  126. package/src/tools/agent-execution-tool.ts +230 -0
  127. package/src/tools/agent-harness-agent-orchestration.ts +703 -0
  128. package/src/tools/agent-harness-autonomy-intake.ts +785 -0
  129. package/src/tools/agent-harness-autonomy-live-records.ts +588 -0
  130. package/src/tools/agent-harness-autonomy-queue-types.ts +88 -0
  131. package/src/tools/agent-harness-autonomy-queue.ts +560 -0
  132. package/src/tools/agent-harness-background-processes-types.ts +35 -0
  133. package/src/tools/agent-harness-background-processes.ts +794 -0
  134. package/src/tools/agent-harness-browser-cockpit-route.ts +219 -0
  135. package/src/tools/agent-harness-browser-control.ts +338 -0
  136. package/src/tools/agent-harness-channel-metadata.ts +168 -10
  137. package/src/tools/agent-harness-cli-command-policy.ts +110 -0
  138. package/src/tools/agent-harness-command-catalog.ts +4 -2
  139. package/src/tools/agent-harness-command-runner.ts +42 -0
  140. package/src/tools/agent-harness-connected-host-status.ts +7 -4
  141. package/src/tools/agent-harness-delegation-posture.ts +234 -19
  142. package/src/tools/agent-harness-document-ops-reviewer-readiness.ts +234 -0
  143. package/src/tools/agent-harness-document-ops-types.ts +72 -0
  144. package/src/tools/agent-harness-document-ops.ts +671 -0
  145. package/src/tools/agent-harness-execution-history.ts +489 -0
  146. package/src/tools/agent-harness-execution-posture.ts +382 -0
  147. package/src/tools/agent-harness-file-recovery.ts +135 -0
  148. package/src/tools/agent-harness-keybinding-metadata.ts +16 -12
  149. package/src/tools/agent-harness-learning-curator-common.ts +102 -0
  150. package/src/tools/agent-harness-learning-curator-consolidation.ts +295 -0
  151. package/src/tools/agent-harness-learning-curator-proposals.ts +606 -0
  152. package/src/tools/agent-harness-learning-curator-types.ts +151 -0
  153. package/src/tools/agent-harness-learning-curator.ts +417 -0
  154. package/src/tools/agent-harness-local-model-benchmarks.ts +199 -0
  155. package/src/tools/agent-harness-local-model-cookbook.ts +238 -0
  156. package/src/tools/agent-harness-local-model-endpoints.ts +673 -0
  157. package/src/tools/agent-harness-media-posture.ts +208 -2
  158. package/src/tools/agent-harness-memory-posture.ts +556 -0
  159. package/src/tools/agent-harness-metadata.ts +100 -168
  160. package/src/tools/agent-harness-mode-catalog.ts +84 -33
  161. package/src/tools/agent-harness-model-catalog.ts +162 -0
  162. package/src/tools/agent-harness-model-provider-health.ts +186 -0
  163. package/src/tools/agent-harness-model-readiness.ts +406 -0
  164. package/src/tools/agent-harness-model-routing-types.ts +266 -0
  165. package/src/tools/agent-harness-model-routing-utils.ts +30 -0
  166. package/src/tools/agent-harness-model-routing.ts +137 -190
  167. package/src/tools/agent-harness-operator-methods.ts +115 -133
  168. package/src/tools/agent-harness-pairing-posture.ts +431 -18
  169. package/src/tools/agent-harness-personal-ops-discovery.ts +533 -0
  170. package/src/tools/agent-harness-personal-ops-intake.ts +385 -0
  171. package/src/tools/agent-harness-personal-ops-lanes.ts +204 -0
  172. package/src/tools/agent-harness-personal-ops-records.ts +732 -0
  173. package/src/tools/agent-harness-personal-ops-runner.ts +637 -0
  174. package/src/tools/agent-harness-personal-ops-types.ts +222 -0
  175. package/src/tools/agent-harness-personal-ops.ts +606 -0
  176. package/src/tools/agent-harness-project-context.ts +144 -0
  177. package/src/tools/agent-harness-prompt-context.ts +589 -0
  178. package/src/tools/agent-harness-provider-account-metadata.ts +2 -2
  179. package/src/tools/agent-harness-release-evidence.ts +9 -7
  180. package/src/tools/agent-harness-release-readiness.ts +9 -7
  181. package/src/tools/agent-harness-research-briefing.ts +427 -0
  182. package/src/tools/agent-harness-research-queue.ts +250 -0
  183. package/src/tools/agent-harness-research-runs.ts +295 -0
  184. package/src/tools/agent-harness-research-workflow.ts +322 -0
  185. package/src/tools/agent-harness-security-posture.ts +2 -2
  186. package/src/tools/agent-harness-service-posture.ts +9 -9
  187. package/src/tools/agent-harness-session-metadata.ts +3 -3
  188. package/src/tools/agent-harness-setup-connected-host.ts +501 -0
  189. package/src/tools/agent-harness-setup-describe.ts +557 -0
  190. package/src/tools/agent-harness-setup-handoffs.ts +502 -0
  191. package/src/tools/agent-harness-setup-model-helpers.ts +101 -0
  192. package/src/tools/agent-harness-setup-plan.ts +253 -0
  193. package/src/tools/agent-harness-setup-posture-types.ts +218 -0
  194. package/src/tools/agent-harness-setup-posture-utils.ts +173 -0
  195. package/src/tools/agent-harness-setup-posture.ts +449 -221
  196. package/src/tools/agent-harness-setup-smoke.ts +508 -0
  197. package/src/tools/agent-harness-sudo-posture.ts +114 -0
  198. package/src/tools/agent-harness-tool-schema.ts +120 -7
  199. package/src/tools/agent-harness-tool-types.ts +78 -0
  200. package/src/tools/agent-harness-tool-utils.ts +43 -0
  201. package/src/tools/agent-harness-tool.ts +311 -370
  202. package/src/tools/agent-harness-ui-surface-metadata.ts +76 -69
  203. package/src/tools/agent-harness-ui-surface-types.ts +46 -0
  204. package/src/tools/agent-harness-vibe-health.ts +105 -0
  205. package/src/tools/agent-harness-workspace-action-runner.ts +149 -0
  206. package/src/tools/agent-harness-workspace-actions.ts +114 -8
  207. package/src/tools/agent-harness-workspace-editor-execution.ts +214 -0
  208. package/src/tools/agent-harness-workspace-editor-runner.ts +755 -0
  209. package/src/tools/agent-host-tool.ts +159 -0
  210. package/src/tools/agent-knowledge-ingest-tool.ts +34 -1
  211. package/src/tools/agent-learning-consolidation-core.ts +327 -0
  212. package/src/tools/agent-learning-consolidation-tool.ts +758 -0
  213. package/src/tools/agent-memory-tool.ts +214 -0
  214. package/src/tools/agent-model-compare-export.ts +315 -0
  215. package/src/tools/agent-model-compare-handoff.ts +592 -0
  216. package/src/tools/agent-model-compare-judgment.ts +633 -0
  217. package/src/tools/agent-model-compare-run.ts +722 -0
  218. package/src/tools/agent-model-compare-tool.ts +698 -0
  219. package/src/tools/agent-model-compare-types.ts +191 -0
  220. package/src/tools/agent-model-compare-utils.ts +93 -0
  221. package/src/tools/agent-models-tool.ts +208 -0
  222. package/src/tools/agent-operator-action-tool.ts +1 -1
  223. package/src/tools/agent-operator-method-tool.ts +643 -0
  224. package/src/tools/agent-personal-ops-tool.ts +197 -0
  225. package/src/tools/agent-policy-explanation.ts +415 -0
  226. package/src/tools/agent-research-report-tool.ts +608 -0
  227. package/src/tools/agent-research-runs-tool.ts +434 -0
  228. package/src/tools/agent-research-sources-tool.ts +443 -0
  229. package/src/tools/agent-research-tool.ts +687 -0
  230. package/src/tools/agent-review-packet-presets-core.ts +757 -0
  231. package/src/tools/agent-review-packet-presets-tool.ts +466 -0
  232. package/src/tools/agent-review-packet-share-tool.ts +305 -0
  233. package/src/tools/agent-route-planner-candidates-setup.ts +411 -0
  234. package/src/tools/agent-route-planner-candidates-surfaces.ts +432 -0
  235. package/src/tools/agent-route-planner-candidates-work.ts +251 -0
  236. package/src/tools/agent-route-planner-helpers.ts +667 -0
  237. package/src/tools/agent-route-planner.ts +185 -0
  238. package/src/tools/agent-route-tool.ts +105 -0
  239. package/src/tools/agent-schedule-edit-tool.ts +210 -0
  240. package/src/tools/agent-schedule-tool.ts +282 -0
  241. package/src/tools/agent-security-tool.ts +145 -0
  242. package/src/tools/agent-sessions-tool.ts +122 -0
  243. package/src/tools/agent-settings-import-tool.ts +104 -0
  244. package/src/tools/agent-settings-tool.ts +176 -0
  245. package/src/tools/agent-setup-tool.ts +226 -0
  246. package/src/tools/agent-support-tool.ts +122 -0
  247. package/src/tools/agent-terminal-process-tools.ts +167 -0
  248. package/src/tools/agent-tool-policy-guard-types.ts +77 -0
  249. package/src/tools/agent-tool-policy-guard.ts +106 -85
  250. package/src/tools/agent-vibe-tool.ts +297 -0
  251. package/src/tools/agent-work-plan-tool.ts +265 -6
  252. package/src/tools/agent-workspace-tool.ts +305 -0
  253. package/src/tools/artifact-archive.ts +169 -0
  254. package/src/tools/tool-definition-compaction.ts +36 -0
  255. package/src/version.ts +1 -1
@@ -1,11 +1,15 @@
1
1
  import { basename, sep } from 'node:path';
2
2
  import { listAvailableSubscriptionProviders } from '@pellux/goodvibes-sdk/platform/config';
3
+ import type { ArtifactDescriptor } from '@pellux/goodvibes-sdk/platform/artifacts';
3
4
  import type { MemoryRecord } from '@pellux/goodvibes-sdk/platform/state';
4
5
  import type { CommandContext } from './command-registry.ts';
5
6
  import { AgentNoteRegistry, type AgentNoteRecord } from '../agent/note-registry.ts';
7
+ import { AgentDocumentRegistry, type AgentDocumentRecord } from '../agent/document-registry.ts';
6
8
  import { AgentPersonaRegistry, type AgentPersonaRecord } from '../agent/persona-registry.ts';
7
9
  import { formatAgentRecordOrigin } from '../agent/record-labels.ts';
8
10
  import { AgentRoutineRegistry, evaluateAgentRoutineReadiness, type AgentRoutineRecord } from '../agent/routine-registry.ts';
11
+ import { AgentResearchRunRegistry, researchRunLogTail } from '../agent/research-run-registry.ts';
12
+ import { AgentResearchSourceRegistry } from '../agent/research-source-registry.ts';
9
13
  import {
10
14
  AgentSkillRegistry,
11
15
  evaluateAgentSkillBundleReadiness,
@@ -16,21 +20,40 @@ import {
16
20
  } from '../agent/skill-registry.ts';
17
21
  import { summarizeAgentBehaviorDiscovery } from '../agent/behavior-discovery-summary.ts';
18
22
  import { isPromptActiveMemory } from '../agent/memory-prompt.ts';
23
+ import type { PromptContextReceipt } from '../agent/prompt-context-receipts.ts';
24
+ import { discoverProjectContextFiles } from '../agent/project-context-files.ts';
19
25
  import { getAgentRuntimeProfilesRoot, listAgentRuntimeProfiles, listAgentRuntimeProfileTemplates, readAgentRuntimeProfileSelection } from '../agent/runtime-profile.ts';
20
26
  import { RoutineScheduleReceiptStore } from '../agent/routine-schedule-receipts.ts';
27
+ import { readSetupWizardCheckpoint } from '../agent/setup-wizard-checkpoint.ts';
28
+ import { discoverVibeFiles } from '../agent/vibe-file.ts';
29
+ import {
30
+ DEFAULT_AGENT_SETUP_WIZARD_CLEAR_CHECKPOINT_ROUTE,
31
+ DEFAULT_AGENT_SETUP_WIZARD_INSPECT_CHECKPOINT_ROUTE,
32
+ DEFAULT_AGENT_SETUP_WIZARD_MARK_CHECKPOINT_ROUTE,
33
+ DEFAULT_AGENT_SETUP_WIZARD_RERUN_SMOKE_ROUTE,
34
+ DEFAULT_AGENT_SETUP_WIZARD_SAVE_SMOKE_ROUTE,
35
+ buildAgentSetupWizard,
36
+ emptyAgentSetupSmokeHistory,
37
+ emptyAgentSetupWizardCheckpoint,
38
+ type AgentSetupWizard,
39
+ type AgentSetupWizardBlockedCheckFrequency,
40
+ type AgentSetupWizardCheckpoint,
41
+ type AgentSetupWizardSmokeHistory,
42
+ type AgentSetupWizardSourceItem,
43
+ } from '../agent/setup-wizard.ts';
21
44
  import { GOODVIBES_AGENT_PAIRING_SURFACE } from '../config/surface.ts';
22
45
  import { connectedHostOperatorTokenFingerprint, readConnectedHostOperatorToken, type ConnectedHostOperatorToken } from '../runtime/connected-host-auth.ts';
23
- import { buildAgentWorkspaceChannels } from './agent-workspace-channels.ts';
46
+ import { buildAgentWorkspaceChannelSetupGuide, buildAgentWorkspaceChannels } from './agent-workspace-channels.ts';
24
47
  import { getAgentWorkspaceConfigReader } from './agent-workspace-config-reader.ts';
25
- import { buildAgentWorkspaceSetupChecklist } from './agent-workspace-setup.ts';
48
+ import { buildAgentWorkspaceSetupChecklist, type AgentWorkspaceSetupChecklistItem } from './agent-workspace-setup.ts';
26
49
  import { buildAgentWorkspaceVoiceMediaReadiness, type AgentWorkspaceVoiceMediaProviderDescriptor } from './agent-workspace-voice-media.ts';
27
- import type {
28
- AgentWorkspaceLocalLibraryItem,
29
- AgentWorkspaceRoutineScheduleReceiptSummary,
30
- AgentWorkspaceRuntimeProfileItem,
31
- AgentWorkspaceRuntimeSnapshot,
32
- AgentWorkspaceRuntimeStarterTemplateItem,
33
- } from './agent-workspace-types.ts';
50
+ import { buildProcessSupervisionSummary, buildProjectContextSummary, buildPromptContextReceiptTimeline, buildResearchBrowserRunnerContract, buildResearchVisualReportContract, buildVibeSummary } from './agent-workspace-context-snapshot.ts';
51
+ import { summarizeMemoryItem, summarizeNoteItem, summarizePersonaItem, summarizeResearchRunItem, summarizeRoutineItem, summarizeRoutineScheduleReceipt, summarizeRuntimeProfile, summarizeSkillBundleItem, summarizeSkillItem, summarizeStarterTemplate } from './agent-workspace-local-library-snapshot.ts';
52
+ import { buildReviewPacketDefaults, buildReviewPacketTimeline, buildReviewPacketWizard, readDocumentDrafts, reviewerReadinessBadge } from './agent-workspace-review-packet-snapshot.ts';
53
+ import { isReviewerHandoffArtifact, summarizeReviewerHandoffArtifact } from './agent-workspace-review-packet-utils.ts';
54
+ import { buildSetupSmokeHistory, buildSetupWizardCheckpoint, buildWorkspaceSetupWizard, setupCompletionMarkerExists } from './agent-workspace-setup-snapshot.ts';
55
+ import { readOnboardingCompletionMarker } from '../runtime/onboarding/index.ts';
56
+ import type { AgentWorkspaceRuntimeSnapshot } from './agent-workspace-types.ts';
34
57
 
35
58
  function readConfigString(context: CommandContext, key: string, fallback: string): string {
36
59
  try {
@@ -80,144 +103,6 @@ function inferRuntimeProfileBaseHome(homeDirectory: string): string {
80
103
  return markerIndex >= 0 ? homeDirectory.slice(0, markerIndex) : homeDirectory;
81
104
  }
82
105
 
83
- function summarizePersonaItem(persona: AgentPersonaRecord, activePersonaId: string | null): AgentWorkspaceLocalLibraryItem {
84
- return {
85
- id: persona.id,
86
- name: persona.name,
87
- description: persona.description,
88
- reviewState: persona.reviewState,
89
- source: formatAgentRecordOrigin(persona.source, persona.provenance),
90
- tags: persona.tags,
91
- triggers: persona.triggers,
92
- active: persona.id === activePersonaId,
93
- };
94
- }
95
-
96
- function summarizeSkillItem(skill: AgentSkillRecord): AgentWorkspaceLocalLibraryItem {
97
- const readiness = evaluateAgentSkillReadiness(skill);
98
- return {
99
- id: skill.id,
100
- name: skill.name,
101
- description: skill.description,
102
- reviewState: skill.reviewState,
103
- source: formatAgentRecordOrigin(skill.source, skill.provenance),
104
- tags: skill.tags,
105
- triggers: skill.triggers,
106
- enabled: skill.enabled,
107
- requirementCount: skill.requirements.length,
108
- missingRequirementCount: readiness.missing.length,
109
- missingRequirements: readiness.missing.map(formatAgentSkillRequirement),
110
- };
111
- }
112
-
113
- function summarizeSkillBundleItem(bundle: AgentSkillBundleRecord, skills: readonly AgentSkillRecord[]): AgentWorkspaceLocalLibraryItem {
114
- const readiness = evaluateAgentSkillBundleReadiness(bundle, skills);
115
- const missing = [
116
- ...readiness.missingRequirements.map(formatAgentSkillRequirement),
117
- ...readiness.missingSkillIds.map((skillId) => `skill:${skillId}`),
118
- ];
119
- return {
120
- id: bundle.id,
121
- name: bundle.name,
122
- description: `${bundle.description} Skills: ${bundle.skillIds.join(', ')}`,
123
- reviewState: bundle.reviewState,
124
- source: formatAgentRecordOrigin(bundle.source, bundle.provenance),
125
- tags: bundle.skillIds,
126
- triggers: [],
127
- enabled: bundle.enabled,
128
- requirementCount: readiness.includedSkills.reduce((total, skill) => total + skill.requirements.length, 0) + readiness.missingSkillIds.length,
129
- missingRequirementCount: missing.length,
130
- missingRequirements: missing,
131
- };
132
- }
133
-
134
- function summarizeRoutineItem(routine: AgentRoutineRecord): AgentWorkspaceLocalLibraryItem {
135
- const readiness = evaluateAgentRoutineReadiness(routine);
136
- return {
137
- id: routine.id,
138
- name: routine.name,
139
- description: routine.description,
140
- reviewState: routine.reviewState,
141
- source: formatAgentRecordOrigin(routine.source, routine.provenance),
142
- tags: routine.tags,
143
- triggers: routine.triggers,
144
- enabled: routine.enabled,
145
- requirementCount: routine.requirements.length,
146
- missingRequirementCount: readiness.missing.length,
147
- missingRequirements: readiness.missing.map(formatAgentSkillRequirement),
148
- startCount: routine.startCount,
149
- };
150
- }
151
-
152
- function summarizeRoutineScheduleReceipt(
153
- receipt: ReturnType<RoutineScheduleReceiptStore['snapshot']>['receipts'][number],
154
- ): AgentWorkspaceRoutineScheduleReceiptSummary {
155
- return {
156
- id: receipt.id,
157
- status: receipt.status,
158
- routineId: receipt.routineId,
159
- routineName: receipt.routineName,
160
- scheduleName: receipt.scheduleName,
161
- scheduleKind: receipt.scheduleKind,
162
- scheduleValue: receipt.scheduleValue,
163
- createdAt: receipt.createdAt,
164
- };
165
- }
166
-
167
- function summarizeMemoryItem(record: MemoryRecord): AgentWorkspaceLocalLibraryItem {
168
- const detail = record.detail?.trim();
169
- return {
170
- id: record.id,
171
- name: record.summary,
172
- description: detail && detail.length > 0 ? detail : `${record.scope}/${record.cls}`,
173
- reviewState: record.reviewState,
174
- source: 'Agent memory',
175
- tags: record.tags,
176
- triggers: [],
177
- scope: record.scope,
178
- cls: record.cls,
179
- confidence: record.confidence,
180
- };
181
- }
182
-
183
- function summarizeNoteItem(note: AgentNoteRecord): AgentWorkspaceLocalLibraryItem {
184
- const preview = note.body.replace(/\s+/g, ' ').trim();
185
- const description = note.sourceUrl
186
- ? `${preview.slice(0, 160)}${preview.length > 160 ? '...' : ''} Origin URL ${note.sourceUrl}`
187
- : preview;
188
- return {
189
- id: note.id,
190
- name: note.title,
191
- description,
192
- reviewState: note.reviewState,
193
- source: formatAgentRecordOrigin(note.source, note.provenance),
194
- tags: note.tags,
195
- triggers: [],
196
- };
197
- }
198
-
199
- function summarizeRuntimeProfile(profile: ReturnType<typeof listAgentRuntimeProfiles>[number]): AgentWorkspaceRuntimeProfileItem {
200
- return {
201
- id: profile.id,
202
- homeDirectory: profile.homeDirectory,
203
- createdAt: profile.createdAt,
204
- starterTemplateId: profile.starterTemplateId,
205
- starterTemplateName: profile.starterTemplateName,
206
- };
207
- }
208
-
209
- function summarizeStarterTemplate(template: ReturnType<typeof listAgentRuntimeProfileTemplates>[number]): AgentWorkspaceRuntimeStarterTemplateItem {
210
- return {
211
- id: template.id,
212
- name: template.name,
213
- description: template.description,
214
- personaName: template.personaName,
215
- skillNames: template.skillNames,
216
- routineNames: template.routineNames,
217
- source: template.source,
218
- };
219
- }
220
-
221
106
  export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): AgentWorkspaceRuntimeSnapshot {
222
107
  const host = readConfigString(context, 'controlPlane.host', '127.0.0.1');
223
108
  const port = readConfigNumber(context, 'controlPlane.port', 3421);
@@ -327,6 +212,93 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
327
212
  return { count: 0, successful: 0, failed: 0, latest: null };
328
213
  }
329
214
  })();
215
+ const researchSourceSnapshot = (() => {
216
+ try {
217
+ const shellPaths = context.workspace?.shellPaths;
218
+ if (!shellPaths) return { count: 0, candidate: 0, reviewed: 0, rejected: 0, used: 0 };
219
+ const snapshot = AgentResearchSourceRegistry.fromShellPaths(shellPaths).snapshot();
220
+ return {
221
+ count: snapshot.sources.length,
222
+ candidate: snapshot.candidates.length,
223
+ reviewed: snapshot.reviewed.length,
224
+ rejected: snapshot.rejected.length,
225
+ used: snapshot.used.length,
226
+ };
227
+ } catch {
228
+ return { count: 0, candidate: 0, reviewed: 0, rejected: 0, used: 0 };
229
+ }
230
+ })();
231
+ const researchRunSnapshot = (() => {
232
+ try {
233
+ const shellPaths = context.workspace?.shellPaths;
234
+ if (!shellPaths) return { count: 0, planned: 0, running: 0, paused: 0, blocked: 0, terminal: 0, items: [] };
235
+ const snapshot = AgentResearchRunRegistry.fromShellPaths(shellPaths).snapshot();
236
+ const actionable = [
237
+ ...snapshot.blocked,
238
+ ...snapshot.running,
239
+ ...snapshot.paused,
240
+ ...snapshot.planned,
241
+ ...snapshot.failed,
242
+ ...snapshot.completed,
243
+ ...snapshot.cancelled,
244
+ ];
245
+ return {
246
+ count: snapshot.runs.length,
247
+ planned: snapshot.planned.length,
248
+ running: snapshot.running.length,
249
+ paused: snapshot.paused.length,
250
+ blocked: snapshot.blocked.length,
251
+ terminal: snapshot.cancelled.length + snapshot.completed.length + snapshot.failed.length,
252
+ items: actionable.slice(0, 8).map(summarizeResearchRunItem),
253
+ };
254
+ } catch {
255
+ return { count: 0, planned: 0, running: 0, paused: 0, blocked: 0, terminal: 0, items: [] };
256
+ }
257
+ })();
258
+ const artifactListSnapshot = (() => {
259
+ try {
260
+ const list = context.platform?.artifactStore?.list;
261
+ return {
262
+ available: Boolean(list),
263
+ items: [...(list?.(100) ?? [])],
264
+ };
265
+ } catch {
266
+ return { available: false, items: [] };
267
+ }
268
+ })();
269
+ const recentReviewerHandoffs = (() => {
270
+ try {
271
+ const handoffs = artifactListSnapshot.items
272
+ .filter(isReviewerHandoffArtifact)
273
+ .sort((left, right) => right.createdAt - left.createdAt);
274
+ return {
275
+ count: handoffs.length,
276
+ items: handoffs.slice(0, 6).map(summarizeReviewerHandoffArtifact),
277
+ };
278
+ } catch {
279
+ return { count: 0, items: [] };
280
+ }
281
+ })();
282
+ const documentDrafts = readDocumentDrafts(context);
283
+ const reviewerBadge = reviewerReadinessBadge(
284
+ documentDrafts,
285
+ artifactListSnapshot.items,
286
+ artifactListSnapshot.available,
287
+ );
288
+ const reviewPacketTimeline = buildReviewPacketTimeline(
289
+ documentDrafts,
290
+ artifactListSnapshot.items,
291
+ artifactListSnapshot.available,
292
+ );
293
+ const reviewPacketDefaults = buildReviewPacketDefaults(
294
+ documentDrafts,
295
+ artifactListSnapshot.items,
296
+ );
297
+ const reviewPacketWizard = buildReviewPacketWizard(
298
+ documentDrafts,
299
+ artifactListSnapshot.available,
300
+ reviewPacketDefaults,
301
+ );
330
302
  const discoveredBehavior = summarizeAgentBehaviorDiscovery(context.workspace?.shellPaths);
331
303
  const profileBaseHome = inferRuntimeProfileBaseHome(context.workspace?.shellPaths?.homeDirectory ?? '');
332
304
  const runtimeProfiles = (() => {
@@ -474,6 +446,7 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
474
446
  }
475
447
  })();
476
448
  const channels = buildAgentWorkspaceChannels(context);
449
+ const channelSetupGuide = buildAgentWorkspaceChannelSetupGuide(channels);
477
450
  const voiceMediaReadiness = buildAgentWorkspaceVoiceMediaReadiness({
478
451
  context,
479
452
  voiceProviders: voiceProviderDescriptors,
@@ -483,6 +456,10 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
483
456
  provider,
484
457
  model,
485
458
  runtimeBaseUrl,
459
+ connectedHostTokenPresent: companionAccess.tokenPresent,
460
+ connectedHostTokenReadable: companionAccess.tokenReadable,
461
+ connectedHostTokenPath: companionAccess.tokenPath,
462
+ connectedHostTokenError: companionAccess.tokenError,
486
463
  activeSubscriptionCount: subscriptionSnapshot.active,
487
464
  pendingSubscriptionCount: subscriptionSnapshot.pending,
488
465
  availableSubscriptionProviderCount: subscriptionSnapshot.available,
@@ -509,6 +486,18 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
509
486
  runtimeProfileCount: runtimeProfiles.length,
510
487
  runtimeStarterTemplateCount: runtimeStarterTemplates.length,
511
488
  });
489
+ const setupWizard = buildWorkspaceSetupWizard(
490
+ setupChecklist,
491
+ buildSetupSmokeHistory(artifactListSnapshot.items, artifactListSnapshot.available),
492
+ buildSetupWizardCheckpoint(context),
493
+ setupCompletionMarkerExists(context),
494
+ );
495
+ const researchBrowserRunnerContract = buildResearchBrowserRunnerContract(context);
496
+ const researchVisualReportContract = buildResearchVisualReportContract(researchSourceSnapshot);
497
+ const vibe = buildVibeSummary(context);
498
+ const projectContext = buildProjectContextSummary(context);
499
+ const promptContextReceipts = buildPromptContextReceiptTimeline(context);
500
+ const processSupervision = buildProcessSupervisionSummary(context);
512
501
 
513
502
  return {
514
503
  provider,
@@ -565,6 +554,30 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
565
554
  localNoteCount: noteSnapshot.count,
566
555
  localNoteReviewQueueCount: noteSnapshot.reviewQueueCount,
567
556
  localNotes: noteSnapshot.items,
557
+ researchSourceCount: researchSourceSnapshot.count,
558
+ researchSourceCandidateCount: researchSourceSnapshot.candidate,
559
+ researchSourceReviewedCount: researchSourceSnapshot.reviewed,
560
+ researchSourceRejectedCount: researchSourceSnapshot.rejected,
561
+ researchSourceUsedCount: researchSourceSnapshot.used,
562
+ researchRunCount: researchRunSnapshot.count,
563
+ researchRunPlannedCount: researchRunSnapshot.planned,
564
+ researchRunRunningCount: researchRunSnapshot.running,
565
+ researchRunPausedCount: researchRunSnapshot.paused,
566
+ researchRunBlockedCount: researchRunSnapshot.blocked,
567
+ researchRunTerminalCount: researchRunSnapshot.terminal,
568
+ researchRuns: researchRunSnapshot.items,
569
+ researchBrowserRunnerContract,
570
+ researchVisualReportContract,
571
+ vibe,
572
+ projectContext,
573
+ promptContextReceipts,
574
+ processSupervision,
575
+ recentReviewerHandoffArtifactCount: recentReviewerHandoffs.count,
576
+ recentReviewerHandoffArtifacts: recentReviewerHandoffs.items,
577
+ reviewerReadinessBadge: reviewerBadge,
578
+ reviewPacketTimeline,
579
+ reviewPacketDefaults,
580
+ reviewPacketWizard,
568
581
  localRoutineCount: routineSnapshot.count,
569
582
  enabledRoutineCount: routineSnapshot.enabled,
570
583
  localRoutines: routineSnapshot.items,
@@ -589,6 +602,7 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
589
602
  delegatedReviewPolicy: 'explicit-build-delegation-only',
590
603
  companionAccess,
591
604
  channels,
605
+ channelSetupGuide,
592
606
  voiceProviderCount: voiceProviders.length,
593
607
  voiceStreamingProviderCount: voiceProviders.filter((entry) => entry.capabilities.includes('tts-stream')).length,
594
608
  voiceSttProviderCount: voiceProviders.filter((entry) => entry.capabilities.includes('stt')).length,
@@ -618,6 +632,7 @@ export function buildAgentWorkspaceRuntimeSnapshot(context: CommandContext): Age
618
632
  localStarterTemplateCount: runtimeStarterTemplates.filter((template) => template.source === 'local').length,
619
633
  runtimeStarterTemplates: runtimeStarterTemplates.map(summarizeStarterTemplate),
620
634
  setupChecklist,
635
+ setupWizard,
621
636
  warnings,
622
637
  };
623
638
  }