prjct-cli 0.35.1 → 0.35.2

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.35.2] - 2026-01-17
4
+
5
+ ### Fix: CLI Workflow Now Uses CommandExecutor
6
+
7
+ The `workflow.ts` was calling `templateExecutor` directly, bypassing the orchestrator.
8
+ Now properly routes through `commandExecutor.execute()` which triggers:
9
+ - Domain detection
10
+ - Agent loading
11
+ - Skill loading
12
+ - Task fragmentation
13
+
14
+ **Files Changed:**
15
+ - `core/commands/workflow.ts` - Uses `commandExecutor.execute()` instead of `templateExecutor`
16
+
3
17
  ## [0.35.1] - 2026-01-17
4
18
 
5
19
  ### Fix: Orchestrator Now Actually Executes
@@ -34,6 +48,7 @@ ALL COMPLETE (100%)
34
48
  - `core/agentic/command-executor.ts` - Calls orchestrator
35
49
  - `core/agentic/prompt-builder.ts` - Injects orchestrator context
36
50
  - `core/types/agentic.ts` - Added orchestrator types
51
+ - `core/commands/workflow.ts` - **Connects CLI to CommandExecutor** (was bypassing orchestrator)
37
52
 
38
53
  ## [0.34.0] - 2026-01-15
39
54
 
@@ -19,6 +19,7 @@ import {
19
19
  } from './base'
20
20
  import { stateStorage, queueStorage } from '../storage'
21
21
  import { templateExecutor } from '../agentic/template-executor'
22
+ import commandExecutor from '../agentic/command-executor'
22
23
 
23
24
  export class WorkflowCommands extends PrjctCommandsBase {
24
25
  /**
@@ -36,12 +37,13 @@ export class WorkflowCommands extends PrjctCommandsBase {
36
37
  }
37
38
 
38
39
  if (task) {
39
- // AGENTIC: Build execution context for Claude to decide
40
- const execContext = await templateExecutor.buildContext('task', task, projectPath)
41
- const agenticInfo = templateExecutor.buildAgenticPrompt(execContext)
40
+ // AGENTIC: Use CommandExecutor for full orchestration support
41
+ const result = await commandExecutor.execute('task', { task }, projectPath)
42
42
 
43
- // Get available agents for context
44
- const availableAgents = await templateExecutor.getAvailableAgents(projectPath)
43
+ if (!result.success) {
44
+ out.fail(result.error || 'Failed to execute task')
45
+ return { success: false, error: result.error }
46
+ }
45
47
 
46
48
  // Write-through: JSON → MD → Event
47
49
  await stateStorage.startTask(projectId, {
@@ -50,18 +52,31 @@ export class WorkflowCommands extends PrjctCommandsBase {
50
52
  sessionId: generateUUID()
51
53
  })
52
54
 
53
- // AGENTIC: Log that Claude will decide via templates
55
+ // Log orchestrator results if available
56
+ if (result.orchestratorContext) {
57
+ const oc = result.orchestratorContext
58
+ const agentsList = oc.agents.map((a: { name: string }) => a.name).join(', ') || 'none'
59
+ const domainsList = oc.detectedDomains.join(', ')
60
+ console.log(`🎯 Orchestrator: ${domainsList} → [${agentsList}]`)
61
+
62
+ if (oc.requiresFragmentation && oc.subtasks) {
63
+ console.log(` → ${oc.subtasks.length} subtasks created`)
64
+ }
65
+ }
66
+
67
+ // Get available agents for backward compatibility
68
+ const availableAgents = await templateExecutor.getAvailableAgents(projectPath)
54
69
  const agentsList = availableAgents.length > 0
55
70
  ? availableAgents.join(', ')
56
71
  : 'none (run p. sync)'
57
72
 
58
- console.log(`🤖 Agentic mode: Claude will read templates and decide`)
59
73
  out.done(`${task} [specialists: ${agentsList}]`)
60
74
 
61
75
  await this.logToMemory(projectPath, 'task_started', {
62
76
  task,
63
77
  agenticMode: true,
64
78
  availableAgents,
79
+ orchestratorContext: result.orchestratorContext,
65
80
  timestamp: dateHelper.getTimestamp(),
66
81
  })
67
82
 
@@ -70,8 +85,8 @@ export class WorkflowCommands extends PrjctCommandsBase {
70
85
  task,
71
86
  agenticMode: true,
72
87
  availableAgents,
73
- execContext,
74
- agenticPrompt: agenticInfo.prompt,
88
+ // Include full CommandExecutor result (orchestratorContext, prompt, etc.)
89
+ ...result,
75
90
  }
76
91
  } else {
77
92
  // Read from storage (JSON is source of truth)
@@ -11471,6 +11471,7 @@ var init_workflow = __esm({
11471
11471
  init_base();
11472
11472
  init_storage2();
11473
11473
  init_template_executor();
11474
+ init_command_executor();
11474
11475
  WorkflowCommands = class extends PrjctCommandsBase {
11475
11476
  static {
11476
11477
  __name(this, "WorkflowCommands");
@@ -11488,21 +11489,33 @@ var init_workflow = __esm({
11488
11489
  return { success: false, error: "No project ID found" };
11489
11490
  }
11490
11491
  if (task) {
11491
- const execContext = await templateExecutor.buildContext("task", task, projectPath);
11492
- const agenticInfo = templateExecutor.buildAgenticPrompt(execContext);
11493
- const availableAgents = await templateExecutor.getAvailableAgents(projectPath);
11492
+ const result = await command_executor_default.execute("task", { task }, projectPath);
11493
+ if (!result.success) {
11494
+ output_default.fail(result.error || "Failed to execute task");
11495
+ return { success: false, error: result.error };
11496
+ }
11494
11497
  await stateStorage.startTask(projectId, {
11495
11498
  id: generateUUID(),
11496
11499
  description: task,
11497
11500
  sessionId: generateUUID()
11498
11501
  });
11502
+ if (result.orchestratorContext) {
11503
+ const oc = result.orchestratorContext;
11504
+ const agentsList2 = oc.agents.map((a) => a.name).join(", ") || "none";
11505
+ const domainsList = oc.detectedDomains.join(", ");
11506
+ console.log(`\u{1F3AF} Orchestrator: ${domainsList} \u2192 [${agentsList2}]`);
11507
+ if (oc.requiresFragmentation && oc.subtasks) {
11508
+ console.log(` \u2192 ${oc.subtasks.length} subtasks created`);
11509
+ }
11510
+ }
11511
+ const availableAgents = await templateExecutor.getAvailableAgents(projectPath);
11499
11512
  const agentsList = availableAgents.length > 0 ? availableAgents.join(", ") : "none (run p. sync)";
11500
- console.log(`\u{1F916} Agentic mode: Claude will read templates and decide`);
11501
11513
  output_default.done(`${task} [specialists: ${agentsList}]`);
11502
11514
  await this.logToMemory(projectPath, "task_started", {
11503
11515
  task,
11504
11516
  agenticMode: true,
11505
11517
  availableAgents,
11518
+ orchestratorContext: result.orchestratorContext,
11506
11519
  timestamp: date_helper_default.getTimestamp()
11507
11520
  });
11508
11521
  return {
@@ -11510,8 +11523,8 @@ var init_workflow = __esm({
11510
11523
  task,
11511
11524
  agenticMode: true,
11512
11525
  availableAgents,
11513
- execContext,
11514
- agenticPrompt: agenticInfo.prompt
11526
+ // Include full CommandExecutor result (orchestratorContext, prompt, etc.)
11527
+ ...result
11515
11528
  };
11516
11529
  } else {
11517
11530
  const currentTask = await stateStorage.getCurrentTask(projectId);
@@ -13846,7 +13859,7 @@ var require_package = __commonJS({
13846
13859
  "package.json"(exports, module) {
13847
13860
  module.exports = {
13848
13861
  name: "prjct-cli",
13849
- version: "0.35.0",
13862
+ version: "0.35.1",
13850
13863
  description: "Built for Claude - Ship fast, track progress, stay focused. Developer momentum tool for indie hackers.",
13851
13864
  main: "core/index.ts",
13852
13865
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prjct-cli",
3
- "version": "0.35.1",
3
+ "version": "0.35.2",
4
4
  "description": "Built for Claude - Ship fast, track progress, stay focused. Developer momentum tool for indie hackers.",
5
5
  "main": "core/index.ts",
6
6
  "bin": {