vigthoria-cli 1.13.26 → 1.13.30

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 (59) hide show
  1. package/README.md +12 -0
  2. package/completions/_vigthoria +1 -0
  3. package/completions/vigthoria.bash +1 -1
  4. package/completions/vigthoria.fish +1 -0
  5. package/dist/commands/chat.js +73 -26
  6. package/dist/commands/config.js +4 -4
  7. package/dist/commands/creative-registration.d.ts +13 -0
  8. package/dist/commands/creative-registration.js +88 -0
  9. package/dist/commands/fork.d.ts +3 -2
  10. package/dist/commands/fork.js +124 -123
  11. package/dist/commands/game.d.ts +8 -0
  12. package/dist/commands/game.js +113 -9
  13. package/dist/commands/history.d.ts +0 -1
  14. package/dist/commands/history.js +8 -22
  15. package/dist/commands/hub.d.ts +20 -0
  16. package/dist/commands/hub.js +17 -3
  17. package/dist/commands/preview.js +7 -2
  18. package/dist/commands/product-run-registration.js +1 -1
  19. package/dist/commands/replay.d.ts +0 -1
  20. package/dist/commands/replay.js +10 -19
  21. package/dist/commands/repo.js +16 -4
  22. package/dist/commands/update-registration.js +2 -2
  23. package/dist/commands/workflow.d.ts +4 -0
  24. package/dist/commands/workflow.js +27 -0
  25. package/dist/index.js +8 -4
  26. package/dist/utils/agentRunOutcome.d.ts +7 -0
  27. package/dist/utils/agentRunOutcome.js +13 -0
  28. package/dist/utils/api.d.ts +20 -5
  29. package/dist/utils/api.js +428 -43
  30. package/dist/utils/command-policy.js +3 -1
  31. package/dist/utils/config.d.ts +2 -0
  32. package/dist/utils/config.js +22 -9
  33. package/dist/utils/frontend-preview-service.d.ts +1 -0
  34. package/dist/utils/frontend-preview-service.js +54 -5
  35. package/dist/utils/model-governance.js +23 -14
  36. package/dist/utils/model-transport-service.js +1 -1
  37. package/dist/utils/network-policy.js +15 -3
  38. package/dist/utils/operator-client.js +23 -4
  39. package/dist/utils/post-write-validator.js +7 -3
  40. package/dist/utils/preview-screenshot-adapter.d.ts +16 -41
  41. package/dist/utils/preview-screenshot-adapter.js +273 -64
  42. package/dist/utils/runtime-capability.d.ts +7 -0
  43. package/dist/utils/runtime-capability.js +11 -0
  44. package/dist/utils/runtime-temp.d.ts +5 -2
  45. package/dist/utils/runtime-temp.js +131 -30
  46. package/dist/utils/tools.js +1 -1
  47. package/dist/utils/v3-stream-events.js +10 -2
  48. package/dist/utils/v3-workspace-service.d.ts +1 -0
  49. package/dist/utils/v3-workspace-service.js +38 -1
  50. package/dist/utils/vigflow-client.d.ts +9 -0
  51. package/dist/utils/vigflow-client.js +48 -2
  52. package/dist/utils/workspace-reference.d.ts +8 -0
  53. package/dist/utils/workspace-reference.js +21 -0
  54. package/install.ps1 +2 -2
  55. package/install.sh +2 -2
  56. package/package.json +4 -6
  57. package/scripts/release/LOCAL_MACHINE_USER_VERIFICATION.md +2 -2
  58. package/scripts/release/validate-live-service-gates.sh +3 -3
  59. package/scripts/release/validate-no-go-gates.sh +2 -0
package/README.md CHANGED
@@ -216,6 +216,18 @@ This generates a tower defense game from scratch with Agent Mode, validates it i
216
216
 
217
217
  ## Commands
218
218
 
219
+ ### Creative V2 planning
220
+
221
+ Use the guarded Creative V2 route for storyboards, videos, commercials,
222
+ avatars, music videos, and audio. The command creates a plan/preflight only;
223
+ it never approves paid rendering, credit debits, publishing, or identity
224
+ processing:
225
+
226
+ ```bash
227
+ vigthoria creative workflows
228
+ vigthoria creative plan --workflow storyboard --duration 30 --aspect-ratio 16:9 "Launch film for a privacy-first AI workspace"
229
+ ```
230
+
219
231
  ### Chat Mode
220
232
 
221
233
  ```bash
@@ -12,6 +12,7 @@ _vigthoria() {
12
12
  'chat-resume:Resume the latest chat session for the current or specified project'
13
13
  'commands:List every CLI command grouped by command family'
14
14
  'config:Configure Vigthoria CLI settings'
15
+ 'creative:Plan guarded media workflows with the native V2 Creative Agent'
15
16
  'deploy:Deploy and host your project on Vigthoria infrastructure'
16
17
  'device:Android Developer Bridge commands via local ADB'
17
18
  'devtools:DevTools Bridge commands for browser debugging'
@@ -1,6 +1,6 @@
1
1
  # Generated from contracts/phase-0/command-manifest.json; do not edit.
2
2
  _vigthoria_completions() {
3
3
  local cur="${COMP_WORDS[COMP_CWORD]}"
4
- COMPREPLY=( $(compgen -W 'agent auth background bridge cancel chat chat-resume commands config deploy device devtools doctor edit explain fix fork game generate history hub hyper-loop init legion login logout menu music operator preview replay repo review security status update v4 v4-menu wallet workflow' -- "$cur") )
4
+ COMPREPLY=( $(compgen -W 'agent auth background bridge cancel chat chat-resume commands config creative deploy device devtools doctor edit explain fix fork game generate history hub hyper-loop init legion login logout menu music operator preview replay repo review security status update v4 v4-menu wallet workflow' -- "$cur") )
5
5
  }
6
6
  complete -F _vigthoria_completions vigthoria vig vigthoria-chat
@@ -8,6 +8,7 @@ complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'ch
8
8
  complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'chat-resume' -d 'Resume the latest chat session for the current or specified project'
9
9
  complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'commands' -d 'List every CLI command grouped by command family'
10
10
  complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'config' -d 'Configure Vigthoria CLI settings'
11
+ complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'creative' -d 'Plan guarded media workflows with the native V2 Creative Agent'
11
12
  complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'deploy' -d 'Deploy and host your project on Vigthoria infrastructure'
12
13
  complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'device' -d 'Android Developer Bridge commands via local ADB'
13
14
  complete -c vigthoria -c vig -c vigthoria-chat -n '__fish_use_subcommand' -a 'devtools' -d 'DevTools Bridge commands for browser debugging'
@@ -22,7 +22,7 @@ import { renderDynamicHelp } from '../utils/command-menu.js';
22
22
  import { resolvePromptWorkspace } from '../utils/prompt-workspace-resolver.js';
23
23
  import { FileUtils } from '../utils/files.js';
24
24
  import { isDirectModeFollowUpQuestion, sanitizeDirectModeOutput, stripHiddenThoughtBlocks } from '../utils/direct-output-policy.js';
25
- import { createLiveOutcome, evaluateExecutorSuccess, handleRunCompleteEvent, handleTaskEvent, isSubstantiveAgentAnswer, isToolEvidenceStubAnswer, normalizeAgentAnswerContent, noteAnalysisToolUse, } from '../utils/agentRunOutcome.js';
25
+ import { createLiveOutcome, evaluateExecutorSuccess, handleRunCompleteEvent, handleTaskEvent, isSubstantiveAgentAnswer, isToolEvidenceStubAnswer, normalizeAgentAnswerContent, noteAnalysisToolUse, resolveAgentPartialMutation, } from '../utils/agentRunOutcome.js';
26
26
  import { looksLikeMarkdownReport, renderMarkdownToTerminal, summarizeMarkdownReport, } from '../utils/terminalMarkdown.js';
27
27
  import { emitDeckEvent, isDeckModeEnabled } from '../utils/deckEvents.js';
28
28
  import { formatGoaSystemGrounding, splitGoaContextFromInput, } from '../utils/goaEvents.js';
@@ -30,6 +30,7 @@ import { inferAgentTaskTypeWithContext, resolvePlannerAgentTimeoutMs, resolveWor
30
30
  import { resolveAgentRoute } from '../utils/agentRoute.js';
31
31
  import { isV3StreamKeepaliveEvent } from '../utils/v3-stream-events.js';
32
32
  import { resolveAutoApproval } from '../utils/process-policy.js';
33
+ import { hasLocalV3ServiceIdentity } from '../utils/runtime-capability.js';
33
34
  import { ChatToolCallParser } from '../utils/chat-tool-call-parser.js';
34
35
  import { ChatPromptPolicy } from '../utils/chat-prompt-policy.js';
35
36
  import { AgentStreamState } from '../utils/agent-stream-state.js';
@@ -1333,17 +1334,18 @@ export class ChatCommand {
1333
1334
  isJsonOutput: () => this.jsonOutput,
1334
1335
  idleTimeoutMs: () => DEFAULT_V3_AGENT_IDLE_TIMEOUT_MS,
1335
1336
  });
1336
- this.sessionManager = new SessionManager();
1337
+ this.sessionManager = new SessionManager(this.config.getStateRoot());
1337
1338
  }
1338
1339
  async run(options) {
1340
+ this.agentMode = options.agent === true;
1341
+ this.operatorMode = options.operator === true;
1339
1342
  const hasRuntimeToken = Boolean(process.env.VIGTHORIA_TOKEN || process.env.VIGTHORIA_AUTH_TOKEN);
1340
- if (!this.config.isAuthenticated() && !hasRuntimeToken) {
1343
+ const hasAgentServiceIdentity = this.agentMode && hasLocalV3ServiceIdentity();
1344
+ if (!this.config.isAuthenticated() && !hasRuntimeToken && !hasAgentServiceIdentity) {
1341
1345
  throw new CliCommandError('Not authenticated. Run: vigthoria login', {
1342
1346
  code: 'AUTH_REQUIRED', category: 'authentication',
1343
1347
  });
1344
1348
  }
1345
- this.agentMode = options.agent === true;
1346
- this.operatorMode = options.operator === true;
1347
1349
  this.workflowTarget = typeof options.workflow === 'string' && options.workflow.trim()
1348
1350
  ? options.workflow.trim()
1349
1351
  : null;
@@ -1884,26 +1886,14 @@ export class ChatCommand {
1884
1886
  await this.runOperatorDirectAnswer(prompt);
1885
1887
  return;
1886
1888
  }
1887
- // ── Repo-grounded operator path: try V3 agent first, then fall back ──
1888
- // Prompts that reference files, code symbols, or analysis verbs need
1889
- // tool access to read actual file contents. Route these through the
1890
- // V3 agent (which archives runs for history/replay/fork and supports
1891
- // workspace hydration) first. Falls back to local agent loop if V3
1892
- // is unreachable.
1893
- if (this.isRepoGroundedPrompt(prompt) && this.tools) {
1894
- this.operatorMode = true;
1895
- const handledByV3 = await this.tryV3AgentWorkflow(prompt);
1896
- if (handledByV3) {
1897
- this.saveSession();
1898
- return;
1899
- }
1900
- await this.runLocalAgentLoop(prompt);
1901
- return;
1902
- }
1903
1889
  getBridgeClient()?.emitPrompt({ prompt, mode: 'operator', model: this.currentModel });
1904
1890
  const runtimeContext = await this.getPromptRuntimeContext(prompt);
1905
1891
  const spinner = this.jsonOutput ? null : createSpinner({ text: 'Thinking like an operator...', spinner: 'clock' }).start();
1906
- const workflowType = 'full';
1892
+ // Operator is the BMAD surface. Keep grounded repository analysis on the
1893
+ // Operator service and make mutation intent explicit instead of silently
1894
+ // diverting it into V3 Agent mode. Read-only is the fail-safe default.
1895
+ const operatorTaskType = inferAgentTaskTypeWithContext(prompt);
1896
+ const workflowType = resolveWorkflowType(operatorTaskType, prompt);
1907
1897
  const executionPrompt = this.buildExecutionPrompt(prompt);
1908
1898
  try {
1909
1899
  this.rememberBrainEvent('task', `GoA operator workflow started for prompt: ${prompt.slice(0, 220)}`, 'operator');
@@ -2963,6 +2953,10 @@ export class ChatCommand {
2963
2953
  return false;
2964
2954
  }
2965
2955
  const errorMessage = `V3 agent workflow returned an incomplete result and legacy fallback is disabled. ${previewGate?.error || 'Workspace changes were not fully validated.'}`;
2956
+ const partialMutation = resolveAgentPartialMutation(changedFileCount, response.metadata?.partialMutation);
2957
+ liveOutcome.executorError = previewGate?.error || 'Template Service preview proof did not pass.';
2958
+ liveOutcome.failedTaskIds.add('preview-gate');
2959
+ liveOutcome.unfinishedTaskIds.delete('agent-run-in-progress');
2966
2960
  if (spinner) {
2967
2961
  spinner.stop();
2968
2962
  }
@@ -2972,8 +2966,8 @@ export class ChatCommand {
2972
2966
  watcher?.stop();
2973
2967
  throw new CliCommandError(errorMessage, {
2974
2968
  code: 'AGENT_PREVIEW_FAILED',
2975
- category: previewGate?.partialMutation === false ? 'execution' : 'partial_mutation',
2976
- partialMutation: previewGate?.partialMutation ?? 'unknown',
2969
+ category: partialMutation === false ? 'execution' : 'partial_mutation',
2970
+ partialMutation,
2977
2971
  details: { executionPath: 'v3-agent', previewGate },
2978
2972
  });
2979
2973
  }
@@ -3168,10 +3162,11 @@ export class ChatCommand {
3168
3162
  }
3169
3163
  }
3170
3164
  if (!executorSucceeded) {
3165
+ const partialMutation = resolveAgentPartialMutation(changedFileCount, response.metadata?.partialMutation);
3171
3166
  throw new CliCommandError(runEvaluation.statusHeadline, {
3172
3167
  code: 'AGENT_INCOMPLETE',
3173
- category: response.partial === true || liveOutcome.tasksSucceeded > 0 ? 'partial_mutation' : 'execution',
3174
- partialMutation: response.partial === true || liveOutcome.tasksSucceeded > 0 ? 'unknown' : false,
3168
+ category: partialMutation === false ? 'execution' : 'partial_mutation',
3169
+ partialMutation,
3175
3170
  details: {
3176
3171
  mode: 'agent',
3177
3172
  model: routingPolicy.selectedModel,
@@ -3217,9 +3212,61 @@ export class ChatCommand {
3217
3212
  catch (error) {
3218
3213
  this.stopV3IdleWatch();
3219
3214
  watcher?.stop();
3215
+ const persistTypedAgentFailure = (failure) => {
3216
+ const safeFailure = sanitizeUserFacingErrorText(failure.message || 'Agent execution failed.');
3217
+ liveOutcome.streamAborted = true;
3218
+ if (!liveOutcome.executorError)
3219
+ liveOutcome.executorError = safeFailure;
3220
+ if (failure.code === 'AGENT_PLAN_INVALID')
3221
+ liveOutcome.failedTaskIds.add('agent-plan');
3222
+ liveOutcome.unfinishedTaskIds.delete('agent-run-in-progress');
3223
+ this.commitAgentRunOutcome({
3224
+ prompt,
3225
+ originalPrompt: null,
3226
+ taskId: null,
3227
+ contextId: executionId,
3228
+ tasksSucceeded: liveOutcome.tasksSucceeded,
3229
+ tasksTotal: liveOutcome.tasksTotal,
3230
+ failedTaskIds: [...liveOutcome.failedTaskIds],
3231
+ unfinishedTaskIds: [...liveOutcome.unfinishedTaskIds],
3232
+ qualityScore: liveOutcome.qualityScore,
3233
+ qualityMissing: liveOutcome.qualityMissing,
3234
+ qualityBlockers: liveOutcome.qualityBlockers,
3235
+ hasOutput: this.api.hasAgentWorkspaceOutput(workspaceContext),
3236
+ answerContent: null,
3237
+ selfHealStatus: 'failed',
3238
+ selfHealTool: null,
3239
+ plannerError: liveOutcome.plannerError ? sanitizeUserFacingErrorText(liveOutcome.plannerError) : null,
3240
+ executorError: liveOutcome.executorError,
3241
+ clientToolErrors: this.api.getClientToolErrors(),
3242
+ transportErrors: this.api.getLastChatTransportErrors(),
3243
+ workspacePath: workspacePath || null,
3244
+ workspaceSyncIssue: null,
3245
+ finishedAt: Date.now(),
3246
+ }, prompt);
3247
+ this.updateAgentExecutionCheckpoint({
3248
+ status: 'failed',
3249
+ contextId: executionId,
3250
+ failedTaskIds: [...liveOutcome.failedTaskIds],
3251
+ unfinishedTaskIds: [...liveOutcome.unfinishedTaskIds],
3252
+ error: liveOutcome.executorError,
3253
+ });
3254
+ };
3255
+ if (error?.code === 'AGENT_PLAN_INVALID') {
3256
+ const planFailure = new CliCommandError(error.message, {
3257
+ code: 'AGENT_PLAN_INVALID',
3258
+ category: 'execution',
3259
+ partialMutation: error?.partialMutation ?? false,
3260
+ details: error?.mutation ? { mutation: error.mutation } : undefined,
3261
+ cause: error,
3262
+ });
3263
+ persistTypedAgentFailure(planFailure);
3264
+ throw planFailure;
3265
+ }
3220
3266
  if (error instanceof CliCommandError) {
3221
3267
  if (spinner)
3222
3268
  spinner.stop();
3269
+ persistTypedAgentFailure(error);
3223
3270
  throw error;
3224
3271
  }
3225
3272
  if (!this.api.hasAgentWorkspaceOutput(workspaceContext)) {
@@ -101,8 +101,8 @@ export class ConfigCommand {
101
101
  message: 'Default AI model:',
102
102
  choices: [
103
103
  { name: '═══ Code Models ═══', disabled: true },
104
- { name: 'Vigthoria v4 Creative 27B - Architect and planning', value: 'architect' },
105
- { name: 'Vigthoria v4 Code 27B - Production executor', value: 'code' },
104
+ { name: 'Vigthoria v4.2 Creative 27B - Multimodal architect and planning', value: 'architect' },
105
+ { name: 'Vigthoria v4.2 Code 27B - Production executor', value: 'code' },
106
106
  { name: 'Vigthoria v4 Assistant 9B - Fast FIM and diagnostics', value: 'assistant' },
107
107
  ],
108
108
  default: 'code',
@@ -309,8 +309,8 @@ export class ConfigCommand {
309
309
  name: 'defaultModel',
310
310
  message: 'Default AI model:',
311
311
  choices: [
312
- { name: 'Vigthoria v4 Creative 27B — Architect', value: 'architect' },
313
- { name: 'Vigthoria v4 Code 27B — Executor', value: 'code' },
312
+ { name: 'Vigthoria v4.2 Creative 27B — Multimodal Architect', value: 'architect' },
313
+ { name: 'Vigthoria v4.2 Code 27B — Executor', value: 'code' },
314
314
  { name: 'Vigthoria v4 Assistant 9B — FIM and diagnostics', value: 'assistant' },
315
315
  ],
316
316
  default: current.preferences.defaultModel,
@@ -0,0 +1,13 @@
1
+ import type { Command } from 'commander';
2
+ import type { Config } from '../utils/config.js';
3
+ import type { Logger } from '../utils/logger.js';
4
+ export type CreativeWorkflow = 'video' | 'storyboard' | 'commercial' | 'avatar' | 'music-video' | 'music-audio';
5
+ export declare function buildCreativePlanPrompt(options: {
6
+ workflow: CreativeWorkflow;
7
+ brief: string;
8
+ title?: string;
9
+ duration?: number;
10
+ aspectRatio?: string;
11
+ project?: string;
12
+ }): string;
13
+ export declare function registerCreativeCommands(program: Command, config: Config, logger: Logger): void;
@@ -0,0 +1,88 @@
1
+ import { ChatCommand } from './chat.js';
2
+ const CREATIVE_ROUTES = {
3
+ video: { taxonomy: 'v2_creative.video_project', runtime: 'v2-creative-studio-core' },
4
+ storyboard: { taxonomy: 'v2_creative.video_project', runtime: 'v2-creative-studio-core' },
5
+ commercial: { taxonomy: 'v2_creative.video_project', runtime: 'v2-creative-studio-core' },
6
+ avatar: { taxonomy: 'v2_creative.avatar_operator', runtime: 'v2-creative-avatar-operator' },
7
+ 'music-video': { taxonomy: 'v2_creative.video_project', runtime: 'v2-creative-studio-core' },
8
+ 'music-audio': { taxonomy: 'v2_creative.music_generation', runtime: 'vigthoria-music-ai' },
9
+ };
10
+ export function buildCreativePlanPrompt(options) {
11
+ const route = CREATIVE_ROUTES[options.workflow];
12
+ return [
13
+ 'Route this request through the native V2 Creative Agent workflow.',
14
+ 'Planning only: do not start paid/cloud rendering, debit credits, publish media, or process identity assets. Return the plan, preflight, quote, and explicit approval gates first.',
15
+ `@vigthoria-creative-v2:${JSON.stringify({
16
+ contract: 'vigthoria-cli-creative-v2.v1',
17
+ taxonomy: route.taxonomy,
18
+ target_runtime: route.runtime,
19
+ phase: 'plan_only',
20
+ workflow: options.workflow,
21
+ title: options.title?.trim() || undefined,
22
+ brief: options.brief.trim(),
23
+ duration_seconds: options.duration,
24
+ aspect_ratio: options.aspectRatio || '16:9',
25
+ workspace_root: options.project,
26
+ safety: {
27
+ paid_render_approved: false,
28
+ identity_processing_approved: false,
29
+ require_preflight_and_quote: true,
30
+ },
31
+ })}`,
32
+ ].join('\n');
33
+ }
34
+ export function registerCreativeCommands(program, config, logger) {
35
+ const creative = program
36
+ .command('creative')
37
+ .description('Plan guarded media workflows with the native V2 Creative Agent');
38
+ creative
39
+ .command('workflows')
40
+ .description('List supported Creative V2 workflow routes')
41
+ .action(() => {
42
+ for (const [name, route] of Object.entries(CREATIVE_ROUTES)) {
43
+ console.log(`${name}\t${route.taxonomy}\t${route.runtime}`);
44
+ }
45
+ });
46
+ creative
47
+ .command('plan <brief...>')
48
+ .description('Create a plan/preflight only; never approves rendering or billing')
49
+ .option('-w, --workflow <workflow>', 'video, storyboard, commercial, avatar, music-video, or music-audio', 'storyboard')
50
+ .option('-t, --title <title>', 'Project or campaign title')
51
+ .option('-d, --duration <seconds>', 'Target duration in seconds', (value) => Number.parseInt(value, 10), 30)
52
+ .option('-a, --aspect-ratio <ratio>', '16:9, 9:16, or 1:1', '16:9')
53
+ .option('-p, --project <path>', 'Workspace/project context', process.cwd())
54
+ .option('--json', 'Emit machine-readable direct-agent output', false)
55
+ .action(async (briefParts, options) => {
56
+ const workflow = String(options.workflow || '').trim();
57
+ if (!Object.prototype.hasOwnProperty.call(CREATIVE_ROUTES, workflow)) {
58
+ throw new Error(`Unsupported Creative V2 workflow: ${options.workflow}`);
59
+ }
60
+ const duration = Number(options.duration);
61
+ if (!Number.isFinite(duration) || duration < 5 || duration > 600) {
62
+ throw new Error('Creative duration must be between 5 and 600 seconds.');
63
+ }
64
+ const aspectRatio = String(options.aspectRatio || '16:9');
65
+ if (!['16:9', '9:16', '1:1'].includes(aspectRatio)) {
66
+ throw new Error('Creative aspect ratio must be 16:9, 9:16, or 1:1.');
67
+ }
68
+ const project = String(options.project || process.cwd());
69
+ const prompt = buildCreativePlanPrompt({
70
+ workflow,
71
+ brief: briefParts.join(' '),
72
+ title: options.title,
73
+ duration,
74
+ aspectRatio,
75
+ project,
76
+ });
77
+ await new ChatCommand(config, logger, program).run({
78
+ model: 'agent',
79
+ project,
80
+ projectProvided: Boolean(options.project),
81
+ agent: true,
82
+ autoApprove: false,
83
+ prompt,
84
+ json: Boolean(options.json),
85
+ });
86
+ });
87
+ creative.action(() => creative.outputHelp());
88
+ }
@@ -7,10 +7,11 @@ interface ForkOptions {
7
7
  }
8
8
  export declare class ForkCommand {
9
9
  private config;
10
- constructor(config: Config, _logger: Logger);
10
+ private logger;
11
+ constructor(config: Config, logger: Logger);
11
12
  private getHeaders;
12
13
  private getBaseUrl;
13
- private resolveWorkspaceRoot;
14
+ private buildForkHistory;
14
15
  run(runId: string, message: string, options: ForkOptions): Promise<void>;
15
16
  }
16
17
  export {};