@pellux/goodvibes-agent 1.1.7 → 1.3.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 (274) hide show
  1. package/CHANGELOG.md +329 -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 +138903 -91477
  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 +58 -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 +116 -45
  14. package/docs/voice-and-live-tts.md +3 -1
  15. package/package.json +3 -2
  16. package/release/release-notes.md +142 -5
  17. package/release/release-readiness.json +124 -94
  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 +294 -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-artifact-receipts.ts +366 -0
  42. package/src/agent/setup-wizard-checkpoint.ts +140 -0
  43. package/src/agent/setup-wizard.ts +683 -0
  44. package/src/agent/skill-registry-types.ts +102 -0
  45. package/src/agent/skill-registry.ts +81 -107
  46. package/src/agent/vibe-confirmation-routes.ts +62 -0
  47. package/src/agent/vibe-file.ts +285 -0
  48. package/src/cli/agent-knowledge-command.ts +45 -2
  49. package/src/cli/help.ts +3 -0
  50. package/src/cli/profiles-command.ts +25 -11
  51. package/src/config/agent-settings-policy.ts +1 -18
  52. package/src/input/agent-workspace-activation.ts +53 -0
  53. package/src/input/agent-workspace-artifact-browser-editor.ts +494 -0
  54. package/src/input/agent-workspace-artifact-metadata.ts +17 -0
  55. package/src/input/agent-workspace-basic-command-editors.ts +5 -1
  56. package/src/input/agent-workspace-categories.ts +153 -155
  57. package/src/input/agent-workspace-channel-triage.ts +481 -0
  58. package/src/input/agent-workspace-channels.ts +263 -0
  59. package/src/input/agent-workspace-command-editor.ts +152 -0
  60. package/src/input/agent-workspace-context-snapshot.ts +349 -0
  61. package/src/input/agent-workspace-delegation-editor-submission.ts +8 -0
  62. package/src/input/agent-workspace-document-editor.ts +502 -0
  63. package/src/input/agent-workspace-document-ops-editor.ts +523 -0
  64. package/src/input/agent-workspace-host-category.ts +1 -1
  65. package/src/input/agent-workspace-local-library-snapshot.ts +167 -0
  66. package/src/input/agent-workspace-model-compare-editor.ts +376 -0
  67. package/src/input/agent-workspace-model-compare-prompt-submission.ts +552 -0
  68. package/src/input/agent-workspace-model-compare-types.ts +82 -0
  69. package/src/input/agent-workspace-model-compare-utils.ts +35 -0
  70. package/src/input/agent-workspace-onboarding-categories.ts +141 -0
  71. package/src/input/agent-workspace-operations-command-editor-submission.ts +53 -0
  72. package/src/input/agent-workspace-operations-command-editors.ts +22 -0
  73. package/src/input/agent-workspace-research-report-editor.ts +212 -0
  74. package/src/input/agent-workspace-research-run-editor.ts +144 -0
  75. package/src/input/agent-workspace-research-source-editor.ts +167 -0
  76. package/src/input/agent-workspace-review-packet-snapshot.ts +593 -0
  77. package/src/input/agent-workspace-review-packet-utils.ts +265 -0
  78. package/src/input/agent-workspace-settings.ts +313 -30
  79. package/src/input/agent-workspace-setup-checkpoint-action.ts +127 -0
  80. package/src/input/agent-workspace-setup-snapshot.ts +217 -0
  81. package/src/input/agent-workspace-setup.ts +61 -1
  82. package/src/input/agent-workspace-snapshot.ts +184 -149
  83. package/src/input/agent-workspace-types.ts +287 -2
  84. package/src/input/agent-workspace.ts +23 -1
  85. package/src/input/command-registry.ts +9 -2
  86. package/src/input/commands/agent-runtime-profile-runtime.ts +28 -13
  87. package/src/input/commands/channels-runtime.ts +102 -114
  88. package/src/input/commands/delegation-runtime.ts +87 -24
  89. package/src/input/commands/knowledge-browser-flags.ts +12 -0
  90. package/src/input/commands/knowledge.ts +28 -14
  91. package/src/input/commands/operator-actions-runtime.ts +6 -3
  92. package/src/input/commands/schedule-runtime.ts +71 -14
  93. package/src/input/commands/session-content.ts +2 -2
  94. package/src/input/commands/shell-core.ts +2 -0
  95. package/src/input/commands/vibe-runtime.ts +140 -0
  96. package/src/input/commands.ts +2 -0
  97. package/src/input/connected-host-routes.ts +123 -0
  98. package/src/input/settings-modal-types.ts +14 -0
  99. package/src/input/setup-wizard-live-receipts.ts +76 -0
  100. package/src/main.ts +15 -15
  101. package/src/panels/qr-panel.ts +2 -2
  102. package/src/renderer/agent-workspace-context-lines.ts +701 -0
  103. package/src/renderer/agent-workspace.ts +68 -421
  104. package/src/renderer/settings-modal-helpers.ts +12 -0
  105. package/src/renderer/settings-modal.ts +12 -0
  106. package/src/runtime/bootstrap-command-context.ts +11 -1
  107. package/src/runtime/bootstrap-command-parts.ts +14 -3
  108. package/src/runtime/bootstrap-core.ts +39 -1
  109. package/src/runtime/bootstrap-shell.ts +6 -0
  110. package/src/runtime/bootstrap.ts +113 -30
  111. package/src/runtime/connected-host-auth.ts +3 -2
  112. package/src/runtime/execution-ledger.ts +231 -0
  113. package/src/runtime/services.ts +88 -10
  114. package/src/runtime/tool-permission-safety.ts +199 -5
  115. package/src/shell/session-continuity-hints.ts +39 -0
  116. package/src/tools/agent-artifacts-tool.ts +606 -0
  117. package/src/tools/agent-audit-tool.ts +155 -0
  118. package/src/tools/agent-autonomy-schedule-tool.ts +238 -0
  119. package/src/tools/agent-autonomy-tool.ts +140 -0
  120. package/src/tools/agent-channel-send-tool.ts +24 -2
  121. package/src/tools/agent-channels-tool.ts +140 -0
  122. package/src/tools/agent-computer-tool.ts +168 -0
  123. package/src/tools/agent-context-policy.ts +137 -7
  124. package/src/tools/agent-context-tool.ts +143 -0
  125. package/src/tools/agent-delegation-tool.ts +128 -0
  126. package/src/tools/agent-device-tool.ts +240 -0
  127. package/src/tools/agent-documents-tool.ts +684 -0
  128. package/src/tools/agent-execution-tool.ts +230 -0
  129. package/src/tools/agent-harness-agent-orchestration-policy.ts +75 -0
  130. package/src/tools/agent-harness-agent-orchestration.ts +791 -0
  131. package/src/tools/agent-harness-autonomy-intake.ts +785 -0
  132. package/src/tools/agent-harness-autonomy-live-records.ts +742 -0
  133. package/src/tools/agent-harness-autonomy-queue-types.ts +88 -0
  134. package/src/tools/agent-harness-autonomy-queue.ts +571 -0
  135. package/src/tools/agent-harness-autonomy-watcher-read-models.ts +509 -0
  136. package/src/tools/agent-harness-background-processes-types.ts +35 -0
  137. package/src/tools/agent-harness-background-processes.ts +798 -0
  138. package/src/tools/agent-harness-browser-cockpit-route.ts +373 -0
  139. package/src/tools/agent-harness-browser-control.ts +346 -0
  140. package/src/tools/agent-harness-browser-pwa-read-models.ts +622 -0
  141. package/src/tools/agent-harness-channel-metadata.ts +168 -10
  142. package/src/tools/agent-harness-cli-command-policy.ts +110 -0
  143. package/src/tools/agent-harness-command-catalog.ts +4 -2
  144. package/src/tools/agent-harness-command-runner.ts +42 -0
  145. package/src/tools/agent-harness-connected-host-status.ts +7 -4
  146. package/src/tools/agent-harness-delegation-posture.ts +234 -19
  147. package/src/tools/agent-harness-device-live-read-models.ts +366 -0
  148. package/src/tools/agent-harness-document-ops-reviewer-readiness.ts +234 -0
  149. package/src/tools/agent-harness-document-ops-types.ts +72 -0
  150. package/src/tools/agent-harness-document-ops.ts +671 -0
  151. package/src/tools/agent-harness-execution-history.ts +489 -0
  152. package/src/tools/agent-harness-execution-posture.ts +385 -0
  153. package/src/tools/agent-harness-file-recovery.ts +135 -0
  154. package/src/tools/agent-harness-interactive-runtime-records.ts +421 -0
  155. package/src/tools/agent-harness-keybinding-metadata.ts +16 -12
  156. package/src/tools/agent-harness-learning-curator-common.ts +102 -0
  157. package/src/tools/agent-harness-learning-curator-consolidation.ts +295 -0
  158. package/src/tools/agent-harness-learning-curator-proposals.ts +606 -0
  159. package/src/tools/agent-harness-learning-curator-types.ts +151 -0
  160. package/src/tools/agent-harness-learning-curator.ts +417 -0
  161. package/src/tools/agent-harness-local-model-benchmarks.ts +269 -0
  162. package/src/tools/agent-harness-local-model-cookbook.ts +238 -0
  163. package/src/tools/agent-harness-local-model-endpoints.ts +788 -0
  164. package/src/tools/agent-harness-local-model-smoke.ts +277 -0
  165. package/src/tools/agent-harness-local-model-url.ts +78 -0
  166. package/src/tools/agent-harness-media-posture.ts +223 -2
  167. package/src/tools/agent-harness-memory-external-providers.ts +796 -0
  168. package/src/tools/agent-harness-memory-posture.ts +672 -0
  169. package/src/tools/agent-harness-memory-provider-certification.ts +219 -0
  170. package/src/tools/agent-harness-memory-refinement.ts +340 -0
  171. package/src/tools/agent-harness-metadata.ts +100 -168
  172. package/src/tools/agent-harness-mode-catalog.ts +86 -33
  173. package/src/tools/agent-harness-model-catalog.ts +162 -0
  174. package/src/tools/agent-harness-model-provider-health.ts +283 -0
  175. package/src/tools/agent-harness-model-readiness.ts +432 -0
  176. package/src/tools/agent-harness-model-routing-types.ts +327 -0
  177. package/src/tools/agent-harness-model-routing-utils.ts +30 -0
  178. package/src/tools/agent-harness-model-routing.ts +165 -193
  179. package/src/tools/agent-harness-operator-methods.ts +115 -133
  180. package/src/tools/agent-harness-pairing-posture.ts +452 -18
  181. package/src/tools/agent-harness-personal-ops-certification.ts +116 -0
  182. package/src/tools/agent-harness-personal-ops-discovery.ts +533 -0
  183. package/src/tools/agent-harness-personal-ops-intake.ts +385 -0
  184. package/src/tools/agent-harness-personal-ops-lanes.ts +270 -0
  185. package/src/tools/agent-harness-personal-ops-operations.ts +225 -0
  186. package/src/tools/agent-harness-personal-ops-provider-records.ts +358 -0
  187. package/src/tools/agent-harness-personal-ops-provider-task-records.ts +321 -0
  188. package/src/tools/agent-harness-personal-ops-records.ts +684 -0
  189. package/src/tools/agent-harness-personal-ops-runner.ts +637 -0
  190. package/src/tools/agent-harness-personal-ops-types.ts +240 -0
  191. package/src/tools/agent-harness-personal-ops.ts +613 -0
  192. package/src/tools/agent-harness-project-context.ts +144 -0
  193. package/src/tools/agent-harness-prompt-context.ts +589 -0
  194. package/src/tools/agent-harness-provider-account-metadata.ts +2 -2
  195. package/src/tools/agent-harness-release-evidence.ts +9 -7
  196. package/src/tools/agent-harness-release-readiness.ts +9 -7
  197. package/src/tools/agent-harness-remote-read-models.ts +541 -0
  198. package/src/tools/agent-harness-research-briefing.ts +446 -0
  199. package/src/tools/agent-harness-research-live-read-models.ts +500 -0
  200. package/src/tools/agent-harness-research-queue.ts +250 -0
  201. package/src/tools/agent-harness-research-runs.ts +307 -0
  202. package/src/tools/agent-harness-research-workflow.ts +395 -0
  203. package/src/tools/agent-harness-security-posture.ts +2 -2
  204. package/src/tools/agent-harness-service-posture.ts +9 -9
  205. package/src/tools/agent-harness-session-metadata.ts +3 -3
  206. package/src/tools/agent-harness-setup-connected-host.ts +501 -0
  207. package/src/tools/agent-harness-setup-describe.ts +557 -0
  208. package/src/tools/agent-harness-setup-handoffs.ts +502 -0
  209. package/src/tools/agent-harness-setup-model-helpers.ts +102 -0
  210. package/src/tools/agent-harness-setup-plan.ts +253 -0
  211. package/src/tools/agent-harness-setup-posture-types.ts +218 -0
  212. package/src/tools/agent-harness-setup-posture-utils.ts +173 -0
  213. package/src/tools/agent-harness-setup-posture.ts +449 -221
  214. package/src/tools/agent-harness-setup-smoke.ts +533 -0
  215. package/src/tools/agent-harness-sudo-posture.ts +114 -0
  216. package/src/tools/agent-harness-tool-schema.ts +142 -7
  217. package/src/tools/agent-harness-tool-types.ts +83 -0
  218. package/src/tools/agent-harness-tool-utils.ts +43 -0
  219. package/src/tools/agent-harness-tool.ts +319 -370
  220. package/src/tools/agent-harness-ui-surface-metadata.ts +76 -69
  221. package/src/tools/agent-harness-ui-surface-types.ts +46 -0
  222. package/src/tools/agent-harness-vibe-health.ts +105 -0
  223. package/src/tools/agent-harness-workspace-action-runner.ts +149 -0
  224. package/src/tools/agent-harness-workspace-actions.ts +114 -8
  225. package/src/tools/agent-harness-workspace-editor-execution.ts +214 -0
  226. package/src/tools/agent-harness-workspace-editor-runner.ts +755 -0
  227. package/src/tools/agent-host-tool.ts +159 -0
  228. package/src/tools/agent-knowledge-ingest-tool.ts +34 -1
  229. package/src/tools/agent-learning-consolidation-core.ts +327 -0
  230. package/src/tools/agent-learning-consolidation-tool.ts +758 -0
  231. package/src/tools/agent-memory-tool.ts +253 -0
  232. package/src/tools/agent-model-compare-export.ts +315 -0
  233. package/src/tools/agent-model-compare-handoff.ts +592 -0
  234. package/src/tools/agent-model-compare-judgment.ts +633 -0
  235. package/src/tools/agent-model-compare-run.ts +735 -0
  236. package/src/tools/agent-model-compare-tool.ts +698 -0
  237. package/src/tools/agent-model-compare-types.ts +191 -0
  238. package/src/tools/agent-model-compare-utils.ts +93 -0
  239. package/src/tools/agent-models-tool.ts +208 -0
  240. package/src/tools/agent-operator-action-tool.ts +1 -1
  241. package/src/tools/agent-operator-method-tool.ts +643 -0
  242. package/src/tools/agent-personal-ops-tool.ts +197 -0
  243. package/src/tools/agent-policy-explanation.ts +415 -0
  244. package/src/tools/agent-research-report-tool.ts +608 -0
  245. package/src/tools/agent-research-runner.ts +367 -0
  246. package/src/tools/agent-research-runs-tool.ts +434 -0
  247. package/src/tools/agent-research-sources-tool.ts +443 -0
  248. package/src/tools/agent-research-tool.ts +515 -0
  249. package/src/tools/agent-review-packet-presets-core.ts +757 -0
  250. package/src/tools/agent-review-packet-presets-tool.ts +466 -0
  251. package/src/tools/agent-review-packet-share-tool.ts +305 -0
  252. package/src/tools/agent-route-planner-candidates-setup.ts +411 -0
  253. package/src/tools/agent-route-planner-candidates-surfaces.ts +432 -0
  254. package/src/tools/agent-route-planner-candidates-work.ts +251 -0
  255. package/src/tools/agent-route-planner-helpers.ts +667 -0
  256. package/src/tools/agent-route-planner.ts +185 -0
  257. package/src/tools/agent-route-tool.ts +105 -0
  258. package/src/tools/agent-schedule-edit-tool.ts +210 -0
  259. package/src/tools/agent-schedule-tool.ts +282 -0
  260. package/src/tools/agent-security-tool.ts +145 -0
  261. package/src/tools/agent-sessions-tool.ts +122 -0
  262. package/src/tools/agent-settings-import-tool.ts +104 -0
  263. package/src/tools/agent-settings-tool.ts +176 -0
  264. package/src/tools/agent-setup-tool.ts +226 -0
  265. package/src/tools/agent-support-tool.ts +122 -0
  266. package/src/tools/agent-terminal-process-tools.ts +167 -0
  267. package/src/tools/agent-tool-policy-guard-types.ts +77 -0
  268. package/src/tools/agent-tool-policy-guard.ts +106 -85
  269. package/src/tools/agent-vibe-tool.ts +297 -0
  270. package/src/tools/agent-work-plan-tool.ts +265 -6
  271. package/src/tools/agent-workspace-tool.ts +305 -0
  272. package/src/tools/artifact-archive.ts +169 -0
  273. package/src/tools/tool-definition-compaction.ts +36 -0
  274. package/src/version.ts +1 -1
@@ -282,7 +282,7 @@ export async function handleAgentKnowledgeCommand(runtime: CliCommandRuntime): P
282
282
  };
283
283
  }
284
284
 
285
- if (normalized === 'ingest-file' || normalized === 'ingest-artifact') {
285
+ if (normalized === 'ingest-file') {
286
286
  const values = commandValues(rest);
287
287
  const path = values[0];
288
288
  if (!path) return { output: 'Usage: goodvibes-agent knowledge ingest-file <path> [--title <title>] [--tags a,b] [--folder <path>] --yes', exitCode: 2 };
@@ -326,6 +326,49 @@ export async function handleAgentKnowledgeCommand(runtime: CliCommandRuntime): P
326
326
  };
327
327
  }
328
328
 
329
+ if (normalized === 'ingest-artifact') {
330
+ const values = commandValues(rest);
331
+ const artifactId = values[0];
332
+ if (!artifactId) return { output: 'Usage: goodvibes-agent knowledge ingest-artifact <artifactId> [--title <title>] [--tags a,b] [--folder <path>] --yes', exitCode: 2 };
333
+ if (!confirmation.present) {
334
+ const failure = {
335
+ ok: false,
336
+ kind: 'confirmation_required',
337
+ error: `Refusing to ingest artifact into Agent Knowledge ${artifactId} without --yes.`,
338
+ route: AGENT_KNOWLEDGE_METHODS.ingestArtifact.route,
339
+ };
340
+ return {
341
+ output: json ? JSON.stringify(failure, null, 2) : `${failure.error}\nUsage: goodvibes-agent knowledge ingest-artifact <artifactId> [--title <title>] [--tags a,b] [--folder <path>] --yes`,
342
+ exitCode: 2,
343
+ };
344
+ }
345
+ const title = readOptionValue(rest, '--title');
346
+ const tags = readStringList(rest, '--tags');
347
+ const folderPath = readOptionValue(rest, '--folder');
348
+ const connectorId = readOptionValue(rest, '--connector') ?? 'goodvibes-agent-artifact-browser';
349
+ const result = await runKnowledgeCall(runtime, AGENT_KNOWLEDGE_METHODS.ingestArtifact, async (connection) => (
350
+ await postAgentKnowledgeJson(connection, AGENT_KNOWLEDGE_METHODS.ingestArtifact.route, {
351
+ artifactId,
352
+ title,
353
+ tags,
354
+ folderPath,
355
+ connectorId,
356
+ metadata: { originSurface: 'goodvibes-agent-cli' },
357
+ })
358
+ ));
359
+ if (!result.ok) return { output: formatFailure(result, json), exitCode: 1 };
360
+ return {
361
+ output: formatJsonOrText(runtime.cli)(result, formatIngest(
362
+ result.data,
363
+ artifactId,
364
+ 'ingest-artifact',
365
+ '/api/goodvibes-agent/knowledge/ingest/artifact',
366
+ 'artifact',
367
+ )),
368
+ exitCode: 0,
369
+ };
370
+ }
371
+
329
372
  if (normalized === 'import-urls' || normalized === 'import-bookmarks') {
330
373
  const values = commandValues(rest);
331
374
  const path = values[0];
@@ -460,7 +503,7 @@ export async function handleAgentKnowledgeCommand(runtime: CliCommandRuntime): P
460
503
  }
461
504
 
462
505
  return {
463
- output: 'Usage: goodvibes-agent knowledge [status|ask <question>|search <query>|list|sources|nodes|issues|get <id>|map|connectors|ingest-url <url> --yes|ingest-file <path> --yes|ingest-connector <id> --yes|import-urls <path> --yes|import-bookmarks <path> --yes|import-browser-history --yes|reindex --yes]',
506
+ output: 'Usage: goodvibes-agent knowledge [status|ask <question>|search <query>|list|sources|nodes|issues|get <id>|map|connectors|ingest-url <url> --yes|ingest-file <path> --yes|ingest-artifact <artifactId> --yes|ingest-connector <id> --yes|import-urls <path> --yes|import-bookmarks <path> --yes|import-browser-history --yes|reindex --yes]',
464
507
  exitCode: 2,
465
508
  };
466
509
  }
package/src/cli/help.ts CHANGED
@@ -38,6 +38,7 @@ export function renderGoodVibesHelp(binary = 'goodvibes-agent'): string {
38
38
  ' /model Choose provider and model',
39
39
  ' /knowledge Use isolated Agent Knowledge',
40
40
  ' /notes Open Agent-local scratchpad notes',
41
+ ' /vibe Inspect or create VIBE.md personality',
41
42
  ' /personas, /skills Tune Agent-local behavior',
42
43
  ' /routines Run local routines in the main conversation',
43
44
  ' /schedule remind Create confirmed reminders or inspect schedules',
@@ -309,6 +310,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
309
310
  'knowledge connectors [connectorId|doctor <connectorId>]',
310
311
  'knowledge ingest-url <url> [--title <title>] [--tags a,b] --yes',
311
312
  'knowledge ingest-file <path> [--title <title>] [--tags a,b] --yes',
313
+ 'knowledge ingest-artifact <artifactId> [--title <title>] [--tags a,b] --yes',
312
314
  'knowledge ingest-connector <connectorId> [--input <json-or-text>|--path <path>|--content <text>] --yes',
313
315
  'knowledge import-urls <path> --yes',
314
316
  'knowledge import-bookmarks <path> --yes',
@@ -325,6 +327,7 @@ const COMMAND_HELP: Record<string, CommandHelp> = {
325
327
  'knowledge connectors doctor url',
326
328
  'knowledge ingest-url https://example.com/page --title "Reference" --yes',
327
329
  'knowledge ingest-file ./docs/guide.md --title "Guide" --yes',
330
+ 'knowledge ingest-artifact artifact-123 --title "Reviewed Export" --yes',
328
331
  'knowledge ingest-connector url --input https://example.com/reference --yes',
329
332
  'knowledge import-urls ~/agent-links.txt --yes',
330
333
  'knowledge import-browser-history --browsers chrome,firefox --sources history,bookmark --yes',
@@ -97,25 +97,28 @@ function renderProfilesResult(result: AgentRuntimeProfileCommandResult): string
97
97
  ` persona ${template.personaName}`,
98
98
  ` skills ${template.skillNames.join(', ')}`,
99
99
  ` routines ${template.routineNames.join(', ')}`,
100
- ].join('\n')),
100
+ template.vibeIncluded ? ' vibe included' : '',
101
+ ].filter(Boolean).join('\n')),
101
102
  'Use goodvibes-agent profiles create <name> --template <id> --yes',
102
- 'Export/edit/import with goodvibes-agent profiles templates export <id> <path> --yes',
103
+ 'Export/edit/import with goodvibes-agent profiles templates export <id> <path> [--include-vibe] --yes',
103
104
  ].join('\n');
104
105
  }
105
106
  if (result.kind === 'agent.profiles.template.export' && result.data?.template && result.data.path) {
106
107
  return [
107
108
  `Agent starter template exported: ${result.data.template.id}`,
108
109
  ` path ${result.data.path}`,
110
+ result.data.template.vibeIncluded ? ' vibe included' : '',
109
111
  ' edit the JSON, then import it with goodvibes-agent profiles templates import <path> --yes',
110
- ].join('\n');
112
+ ].filter(Boolean).join('\n');
111
113
  }
112
114
  if (result.kind === 'agent.profiles.template.import' && result.data?.template) {
113
115
  return [
114
116
  `Agent starter template imported: ${result.data.template.id}`,
115
117
  ` name ${result.data.template.name}`,
116
118
  ` origin ${formatAgentRecordSource(result.data.template.source)}`,
119
+ result.data.template.vibeIncluded ? ' vibe included' : '',
117
120
  ` use goodvibes-agent profiles create <name> --template ${result.data.template.id} --yes`,
118
- ].join('\n');
121
+ ].filter(Boolean).join('\n');
119
122
  }
120
123
  if (result.kind === 'agent.profiles.template.from_discovered' && result.data?.template) {
121
124
  return [
@@ -124,8 +127,9 @@ function renderProfilesResult(result: AgentRuntimeProfileCommandResult): string
124
127
  ` persona ${result.data.template.personaName}`,
125
128
  ` skills ${result.data.template.skillNames.join(', ')}`,
126
129
  ` routines ${result.data.template.routineNames.join(', ')}`,
130
+ result.data.template.vibeIncluded ? ' vibe included' : '',
127
131
  ` use goodvibes-agent profiles create <name> --template ${result.data.template.id} --yes`,
128
- ].join('\n');
132
+ ].filter(Boolean).join('\n');
129
133
  }
130
134
  if (result.kind === 'agent.profiles.default') {
131
135
  const selected = result.data?.selectedProfile;
@@ -157,8 +161,9 @@ function renderProfilesResult(result: AgentRuntimeProfileCommandResult): string
157
161
  ` persona ${result.data.template.personaName}`,
158
162
  ` skills ${result.data.template.skillNames.join(', ')}`,
159
163
  ` routines ${result.data.template.routineNames.join(', ')}`,
164
+ result.data.template.vibeIncluded ? ' vibe included' : '',
160
165
  ` launch: ${result.data.nextCommand ?? `goodvibes-agent --agent-profile ${result.data.profile.id}`}`,
161
- ].join('\n');
166
+ ].filter(Boolean).join('\n');
162
167
  }
163
168
  const profile = result.data?.profile;
164
169
  if (result.kind === 'agent.profiles.create' && profile) {
@@ -169,9 +174,10 @@ function renderProfilesResult(result: AgentRuntimeProfileCommandResult): string
169
174
  ...(template ? [
170
175
  ` starter: ${template.id} (${template.name})`,
171
176
  ` seeded: ${template.personaIds.length} persona, ${template.skillIds.length} skills, ${template.routineIds.length} routine`,
177
+ template.vibePath ? ` vibe ${template.vibePath}` : '',
172
178
  ] : []),
173
179
  ` use ${result.data?.nextCommand ?? `goodvibes-agent --agent-profile ${profile.id}`}`,
174
- ].join('\n');
180
+ ].filter(Boolean).join('\n');
175
181
  }
176
182
  if (result.kind === 'agent.profiles.delete' && profile) {
177
183
  return [
@@ -211,7 +217,7 @@ export async function handleProfilesCommand(runtime: ProfilesCommandRuntime): Pr
211
217
  const result: AgentRuntimeProfileCommandResult = {
212
218
  ok: false,
213
219
  kind: 'agent.profiles.error',
214
- error: 'Usage: goodvibes-agent profiles templates from-discovered <id> [--name <name>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--replace] --yes',
220
+ error: 'Usage: goodvibes-agent profiles templates from-discovered <id> [--name <name>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--include-vibe] [--replace] --yes',
215
221
  };
216
222
  return {
217
223
  output: renderProfilesOutput(result, runtime.cli.flags.outputFormat),
@@ -239,6 +245,7 @@ export async function handleProfilesCommand(runtime: ProfilesCommandRuntime): Pr
239
245
  persona: flagValue(rawRest, ['--persona']) ?? undefined,
240
246
  skills: parseCsvFlag(rawRest, ['--skills']),
241
247
  routines: parseCsvFlag(rawRest, ['--routines']),
248
+ includeVibe: rawRest.includes('--include-vibe'),
242
249
  replace: hasYes(rawRest) && rawRest.includes('--replace'),
243
250
  });
244
251
  const result: AgentRuntimeProfileCommandResult = {
@@ -256,7 +263,7 @@ export async function handleProfilesCommand(runtime: ProfilesCommandRuntime): Pr
256
263
  const result: AgentRuntimeProfileCommandResult = {
257
264
  ok: false,
258
265
  kind: 'agent.profiles.error',
259
- error: 'Usage: goodvibes-agent profiles templates export <id> <path> --yes',
266
+ error: 'Usage: goodvibes-agent profiles templates export <id> <path> [--include-vibe] --yes',
260
267
  };
261
268
  return {
262
269
  output: renderProfilesOutput(result, runtime.cli.flags.outputFormat),
@@ -274,7 +281,13 @@ export async function handleProfilesCommand(runtime: ProfilesCommandRuntime): Pr
274
281
  exitCode: 2,
275
282
  };
276
283
  }
277
- const template = exportAgentRuntimeProfileTemplate(runtime.homeDirectory, templateId, templatePath);
284
+ const template = exportAgentRuntimeProfileTemplate(runtime.homeDirectory, templateId, templatePath, {
285
+ includeVibe: rawRest.includes('--include-vibe'),
286
+ shellPaths: {
287
+ homeDirectory: runtime.homeDirectory,
288
+ workingDirectory: runtime.workingDirectory,
289
+ },
290
+ });
278
291
  const result: AgentRuntimeProfileCommandResult = {
279
292
  ok: true,
280
293
  kind: 'agent.profiles.template.export',
@@ -506,7 +519,7 @@ export async function handleProfilesCommand(runtime: ProfilesCommandRuntime): Pr
506
519
  const result: AgentRuntimeProfileCommandResult = {
507
520
  ok: false,
508
521
  kind: 'agent.profiles.error',
509
- error: 'Usage: goodvibes-agent profiles create-from-discovered <name> [--template-id <id>] [--profile-name <display>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--replace] --yes',
522
+ error: 'Usage: goodvibes-agent profiles create-from-discovered <name> [--template-id <id>] [--profile-name <display>] [--description <summary>] [--persona <name>] [--skills all|name,name] [--routines all|name,name] [--include-vibe] [--replace] --yes',
510
523
  };
511
524
  return {
512
525
  output: renderProfilesOutput(result, runtime.cli.flags.outputFormat),
@@ -535,6 +548,7 @@ export async function handleProfilesCommand(runtime: ProfilesCommandRuntime): Pr
535
548
  persona: flagValue(rawRest, ['--persona']) ?? undefined,
536
549
  skills: parseCsvFlag(rawRest, ['--skills']),
537
550
  routines: parseCsvFlag(rawRest, ['--routines']),
551
+ includeVibe: rawRest.includes('--include-vibe'),
538
552
  replace: rawRest.includes('--replace'),
539
553
  });
540
554
  const result: AgentRuntimeProfileCommandResult = {
@@ -1,20 +1,7 @@
1
- export const AGENT_EXTERNAL_HOST_SETTING_LOCK_REASON = 'GoodVibes Agent uses a connected GoodVibes host. Change host lifecycle and bind posture from the owning host; Agent settings are read-only for those controls.';
1
+ export const AGENT_EXTERNAL_HOST_SETTING_LOCK_REASON = 'This raw daemon/listener danger toggle is protected. Use an explicit confirmed operator action or setup command for lifecycle changes.';
2
2
 
3
3
  const AGENT_HIDDEN_SETTING_PREFIXES = [
4
- ['cloud', 'flare.'].join(''),
5
- ['surfaces.', 'home', 'assistant.'].join(''),
6
- 'batch.',
7
- 'controlPlane.',
8
4
  'danger.',
9
- 'httpListener.',
10
- 'network.',
11
- 'orchestration.',
12
- 'runtime.',
13
- 'service.',
14
- 'sandbox.',
15
- 'web.',
16
- 'watchers.',
17
- 'wrfc.',
18
5
  ] as const;
19
6
 
20
7
  const AGENT_HIDDEN_SETTING_KEYS = new Set<string>([
@@ -22,10 +9,6 @@ const AGENT_HIDDEN_SETTING_KEYS = new Set<string>([
22
9
  ]);
23
10
 
24
11
  const EXTERNAL_HOST_SETTING_PREFIXES = [
25
- 'service.',
26
- 'controlPlane.',
27
- 'httpListener.',
28
- 'web.',
29
12
  ] as const;
30
13
 
31
14
  const EXTERNAL_HOST_SETTING_KEYS = new Set<string>([
@@ -1,6 +1,13 @@
1
1
  import { createLearnedBehaviorEditor, createLocalEditor, createProfileEditor } from './agent-workspace-editors.ts';
2
+ import { createAgentArtifactBrowserEditor, createAgentArtifactExportEditor, createAgentArtifactPackageEditor, createAgentArtifactPromoteKnowledgeEditor, createAgentArtifactShowEditor } from './agent-workspace-artifact-browser-editor.ts';
3
+ import { createAgentDocumentAcceptSuggestionEditor, createAgentDocumentAttachArtifactEditor, createAgentDocumentBrowseEditor, createAgentDocumentCommentEditor, createAgentDocumentCreateEditor, createAgentDocumentExportEditor, createAgentDocumentInsertArtifactEditor, createAgentDocumentRejectSuggestionEditor, createAgentDocumentResolveCommentEditor, createAgentDocumentReviewEditor, createAgentDocumentShowEditor, createAgentDocumentSuggestEditor, createAgentDocumentUpdateEditor } from './agent-workspace-document-editor.ts';
4
+ import { createAgentDocumentReviewerReadinessEditor, createAgentDocumentReviewPacketPresetEditor, createAgentDocumentReviewPacketPresetRefreshEditor, createAgentDocumentReviewPacketShareEditor, createAgentDocumentReviewPacketWizardEditor } from './agent-workspace-document-ops-editor.ts';
2
5
  import { createAgentWorkspaceBasicCommandEditor, isAgentWorkspaceBasicCommandEditorKind } from './agent-workspace-basic-command-editors.ts';
3
6
  import { createAgentKnowledgeQueryEditor } from './agent-workspace-knowledge-query-editor.ts';
7
+ import { createAgentLocalModelBenchmarkEditor, createAgentModelCompareAnalyticsEditor, createAgentModelCompareApplyEditor, createAgentModelCompareEditor, createAgentModelCompareExportEditor, createAgentModelCompareHandoffDiffEditor, createAgentModelCompareJudgmentEditor, createAgentModelCompareReviewEditor, createAgentModelCompareRouteDecisionEditor } from './agent-workspace-model-compare-editor.ts';
8
+ import { createAgentResearchReportEditor } from './agent-workspace-research-report-editor.ts';
9
+ import { createAgentResearchRunEditor } from './agent-workspace-research-run-editor.ts';
10
+ import { createAgentResearchSourceEditor } from './agent-workspace-research-source-editor.ts';
4
11
  import { createReminderScheduleEditor } from './agent-workspace-reminder-schedule-editor.ts';
5
12
  import { createRoutineScheduleEditor } from './agent-workspace-routine-schedule-editor.ts';
6
13
  import { createAgentWorkspaceWebResearchEditor } from './agent-workspace-web-research-editor.ts';
@@ -15,6 +22,8 @@ import type {
15
22
  AgentWorkspaceLocalEditorKind,
16
23
  AgentWorkspaceLocalLibraryItem,
17
24
  AgentWorkspaceLocalOperation,
25
+ AgentWorkspaceRecentReviewerHandoffArtifact,
26
+ AgentWorkspaceReviewPacketDefaults,
18
27
  AgentWorkspaceRuntimeSnapshot,
19
28
  AgentWorkspaceRuntimeStarterTemplateItem,
20
29
  } from './agent-workspace-types.ts';
@@ -38,6 +47,7 @@ interface AgentWorkspaceActivationHost {
38
47
  applyLocalLibraryOperation(operation: AgentWorkspaceLocalOperation): void;
39
48
  applySettingAction(action: AgentWorkspaceCategory['actions'][number], requestRender?: () => void): void;
40
49
  importTuiSettings(requestRender?: () => void): void;
50
+ applySetupCheckpointAction(action: AgentWorkspaceCategory['actions'][number], requestRender?: () => void): void;
41
51
  openModelPickerAction(action: AgentWorkspaceCategory['actions'][number], requestRender?: () => void): void;
42
52
  openSettingsModalAction(action: AgentWorkspaceCategory['actions'][number], requestRender?: () => void): void;
43
53
  completeOnboarding(): void;
@@ -69,6 +79,10 @@ export function activateAgentWorkspaceSelection(
69
79
  workspace.importTuiSettings(requestRender);
70
80
  return;
71
81
  }
82
+ if (action.kind === 'setup-checkpoint') {
83
+ workspace.applySetupCheckpointAction(action, requestRender);
84
+ return;
85
+ }
72
86
  if (action.kind === 'model-picker') {
73
87
  workspace.openModelPickerAction(action, requestRender);
74
88
  return;
@@ -81,6 +95,8 @@ export function activateAgentWorkspaceSelection(
81
95
  const editor = createAgentWorkspaceEditor(action.editorKind, {
82
96
  runtimeStarterTemplates: workspace.runtimeSnapshot?.runtimeStarterTemplates ?? [],
83
97
  selectedRoutine: workspace.selectedLocalLibraryItem('routine'),
98
+ recentReviewerHandoffArtifacts: workspace.runtimeSnapshot?.recentReviewerHandoffArtifacts ?? [],
99
+ reviewPacketDefaults: workspace.runtimeSnapshot?.reviewPacketDefaults ?? null,
84
100
  });
85
101
  if (!editor) {
86
102
  workspace.status = `Editor unavailable: ${action.editorKind}.`;
@@ -178,12 +194,49 @@ export function createAgentWorkspaceEditor(
178
194
  options: {
179
195
  readonly runtimeStarterTemplates?: readonly AgentWorkspaceRuntimeStarterTemplateItem[];
180
196
  readonly selectedRoutine?: AgentWorkspaceLocalLibraryItem | null;
197
+ readonly recentReviewerHandoffArtifacts?: readonly AgentWorkspaceRecentReviewerHandoffArtifact[];
198
+ readonly reviewPacketDefaults?: AgentWorkspaceReviewPacketDefaults | null;
181
199
  } = {},
182
200
  ): AgentWorkspaceLocalEditor | null {
183
201
  if (editorKind === 'profile') return createProfileEditor(options.runtimeStarterTemplates ?? []);
184
202
  if (editorKind === 'learned-behavior') return createLearnedBehaviorEditor();
185
203
  if (editorKind === 'web-research') return createAgentWorkspaceWebResearchEditor('research');
186
204
  if (editorKind === 'web-fetch') return createAgentWorkspaceWebResearchEditor('fetch');
205
+ if (editorKind === 'research-run') return createAgentResearchRunEditor();
206
+ if (editorKind === 'research-source') return createAgentResearchSourceEditor();
207
+ if (editorKind === 'research-report') return createAgentResearchReportEditor();
208
+ if (editorKind === 'artifact-browser') return createAgentArtifactBrowserEditor();
209
+ if (editorKind === 'artifact-show') return createAgentArtifactShowEditor();
210
+ if (editorKind === 'artifact-export-file') return createAgentArtifactExportEditor();
211
+ if (editorKind === 'artifact-export-package') return createAgentArtifactPackageEditor();
212
+ if (editorKind === 'artifact-promote-knowledge') return createAgentArtifactPromoteKnowledgeEditor();
213
+ if (editorKind === 'document-browse') return createAgentDocumentBrowseEditor();
214
+ if (editorKind === 'document-show') return createAgentDocumentShowEditor();
215
+ if (editorKind === 'document-create') return createAgentDocumentCreateEditor();
216
+ if (editorKind === 'document-update') return createAgentDocumentUpdateEditor();
217
+ if (editorKind === 'document-review') return createAgentDocumentReviewEditor();
218
+ if (editorKind === 'document-comment') return createAgentDocumentCommentEditor();
219
+ if (editorKind === 'document-resolve-comment') return createAgentDocumentResolveCommentEditor();
220
+ if (editorKind === 'document-suggest') return createAgentDocumentSuggestEditor();
221
+ if (editorKind === 'document-accept-suggestion') return createAgentDocumentAcceptSuggestionEditor();
222
+ if (editorKind === 'document-reject-suggestion') return createAgentDocumentRejectSuggestionEditor();
223
+ if (editorKind === 'document-insert-artifact') return createAgentDocumentInsertArtifactEditor();
224
+ if (editorKind === 'document-attach-artifact') return createAgentDocumentAttachArtifactEditor();
225
+ if (editorKind === 'document-export') return createAgentDocumentExportEditor(options.reviewPacketDefaults ?? null);
226
+ if (editorKind === 'document-reviewer-readiness') return createAgentDocumentReviewerReadinessEditor();
227
+ if (editorKind === 'document-review-packet-wizard') return createAgentDocumentReviewPacketWizardEditor();
228
+ if (editorKind === 'document-review-packet-preset') return createAgentDocumentReviewPacketPresetEditor(options.reviewPacketDefaults ?? null);
229
+ if (editorKind === 'document-review-packet-preset-refresh') return createAgentDocumentReviewPacketPresetRefreshEditor();
230
+ if (editorKind === 'document-review-packet-share') return createAgentDocumentReviewPacketShareEditor(options.reviewPacketDefaults ?? null);
231
+ if (editorKind === 'model-compare') return createAgentModelCompareEditor();
232
+ if (editorKind === 'local-model-benchmark') return createAgentLocalModelBenchmarkEditor();
233
+ if (editorKind === 'model-compare-review') return createAgentModelCompareReviewEditor();
234
+ if (editorKind === 'model-compare-handoff-diff') return createAgentModelCompareHandoffDiffEditor(options.recentReviewerHandoffArtifacts ?? []);
235
+ if (editorKind === 'model-compare-judge') return createAgentModelCompareJudgmentEditor();
236
+ if (editorKind === 'model-compare-apply') return createAgentModelCompareApplyEditor(options.reviewPacketDefaults ?? null);
237
+ if (editorKind === 'model-compare-route-decision') return createAgentModelCompareRouteDecisionEditor(options.reviewPacketDefaults ?? null);
238
+ if (editorKind === 'model-compare-export') return createAgentModelCompareExportEditor(options.reviewPacketDefaults ?? null);
239
+ if (editorKind === 'model-compare-analytics') return createAgentModelCompareAnalyticsEditor();
187
240
  if (editorKind && isAgentWorkspaceBasicCommandEditorKind(editorKind)) return createAgentWorkspaceBasicCommandEditor(editorKind);
188
241
  if (editorKind === 'knowledge-ask') return createAgentKnowledgeQueryEditor('ask');
189
242
  if (editorKind === 'knowledge-search') return createAgentKnowledgeQueryEditor('search');