@agentic-coding-framework/orchestrator-core 0.1.2 → 0.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.
- package/dist/__tests__/dispatch.test.d.ts +2 -0
- package/dist/__tests__/dispatch.test.d.ts.map +1 -0
- package/dist/__tests__/dispatch.test.js +373 -0
- package/dist/__tests__/dispatch.test.js.map +1 -0
- package/dist/__tests__/rules.test.d.ts +2 -0
- package/dist/__tests__/rules.test.d.ts.map +1 -0
- package/dist/__tests__/rules.test.js +124 -0
- package/dist/__tests__/rules.test.js.map +1 -0
- package/dist/__tests__/state.test.d.ts +2 -0
- package/dist/__tests__/state.test.d.ts.map +1 -0
- package/dist/__tests__/state.test.js +161 -0
- package/dist/__tests__/state.test.js.map +1 -0
- package/dist/auto.d.ts +50 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +263 -0
- package/dist/auto.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +100 -4
- package/dist/cli.js.map +1 -0
- package/dist/dispatch.d.ts +40 -90
- package/dist/dispatch.d.ts.map +1 -0
- package/dist/dispatch.js +124 -66
- package/dist/dispatch.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -0
- package/dist/rules.d.ts +21 -38
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +17 -67
- package/dist/rules.js.map +1 -0
- package/dist/state.d.ts +21 -36
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +69 -0
- package/dist/state.js.map +1 -0
- package/package.json +2 -22
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
const state_1 = require("../state");
|
|
8
|
+
(0, vitest_1.describe)("state", () => {
|
|
9
|
+
let tempDir;
|
|
10
|
+
(0, vitest_1.beforeEach)(() => {
|
|
11
|
+
tempDir = (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), "state-test-"));
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.afterEach)(() => {
|
|
14
|
+
(0, fs_1.rmSync)(tempDir, { recursive: true, force: true });
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.describe)("createInitialState", () => {
|
|
17
|
+
(0, vitest_1.it)("creates state with correct defaults", () => {
|
|
18
|
+
const state = (0, state_1.createInitialState)("my-app");
|
|
19
|
+
(0, vitest_1.expect)(state.project).toBe("my-app");
|
|
20
|
+
(0, vitest_1.expect)(state.step).toBe("bootstrap");
|
|
21
|
+
(0, vitest_1.expect)(state.attempt).toBe(1);
|
|
22
|
+
(0, vitest_1.expect)(state.status).toBe("pending");
|
|
23
|
+
(0, vitest_1.expect)(state.reason).toBeNull();
|
|
24
|
+
(0, vitest_1.expect)(state.story).toBeNull();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.describe)("validate", () => {
|
|
28
|
+
(0, vitest_1.it)("accepts valid state", () => {
|
|
29
|
+
const state = (0, state_1.createInitialState)("app");
|
|
30
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).not.toThrow();
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)("rejects empty project", () => {
|
|
33
|
+
const state = (0, state_1.createInitialState)("");
|
|
34
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).toThrow("project is required");
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)("rejects invalid step", () => {
|
|
37
|
+
const state = (0, state_1.createInitialState)("app");
|
|
38
|
+
state.step = "invalid";
|
|
39
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).toThrow("Invalid step");
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)("rejects invalid status", () => {
|
|
42
|
+
const state = (0, state_1.createInitialState)("app");
|
|
43
|
+
state.status = "banana";
|
|
44
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).toThrow("Invalid status");
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)("rejects invalid reason (non-null)", () => {
|
|
47
|
+
const state = (0, state_1.createInitialState)("app");
|
|
48
|
+
state.reason = "bad_reason";
|
|
49
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).toThrow("Invalid reason");
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)("accepts null reason", () => {
|
|
52
|
+
const state = (0, state_1.createInitialState)("app");
|
|
53
|
+
state.reason = null;
|
|
54
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).not.toThrow();
|
|
55
|
+
});
|
|
56
|
+
(0, vitest_1.it)("accepts valid reason", () => {
|
|
57
|
+
const state = (0, state_1.createInitialState)("app");
|
|
58
|
+
state.reason = "needs_clarification";
|
|
59
|
+
(0, vitest_1.expect)(() => (0, state_1.validate)(state)).not.toThrow();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.describe)("read/write round-trip", () => {
|
|
63
|
+
(0, vitest_1.it)("writes and reads back identical state", () => {
|
|
64
|
+
const original = (0, state_1.createInitialState)("round-trip-app");
|
|
65
|
+
original.story = "US-001";
|
|
66
|
+
original.step = "impl";
|
|
67
|
+
original.attempt = 3;
|
|
68
|
+
original.status = "failing";
|
|
69
|
+
original.reason = "constitution_violation";
|
|
70
|
+
(0, state_1.writeState)(tempDir, original);
|
|
71
|
+
const loaded = (0, state_1.readState)(tempDir);
|
|
72
|
+
(0, vitest_1.expect)(loaded).toEqual(original);
|
|
73
|
+
});
|
|
74
|
+
(0, vitest_1.it)("creates .ai/ directory if missing", () => {
|
|
75
|
+
const state = (0, state_1.createInitialState)("new-project");
|
|
76
|
+
(0, state_1.writeState)(tempDir, state);
|
|
77
|
+
const loaded = (0, state_1.readState)(tempDir);
|
|
78
|
+
(0, vitest_1.expect)(loaded.project).toBe("new-project");
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.it)("throws when reading non-existent STATE.json", () => {
|
|
81
|
+
(0, vitest_1.expect)(() => (0, state_1.readState)(tempDir)).toThrow("STATE.json not found");
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.describe)("initState", () => {
|
|
85
|
+
(0, vitest_1.it)("creates new state file", () => {
|
|
86
|
+
const { created, state } = (0, state_1.initState)(tempDir, "init-app");
|
|
87
|
+
(0, vitest_1.expect)(created).toBe(true);
|
|
88
|
+
(0, vitest_1.expect)(state.project).toBe("init-app");
|
|
89
|
+
});
|
|
90
|
+
(0, vitest_1.it)("skips if already exists", () => {
|
|
91
|
+
(0, state_1.initState)(tempDir, "init-app");
|
|
92
|
+
const { created, state } = (0, state_1.initState)(tempDir, "different-name");
|
|
93
|
+
(0, vitest_1.expect)(created).toBe(false);
|
|
94
|
+
(0, vitest_1.expect)(state.project).toBe("init-app"); // original preserved
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.describe)("isTimedOut", () => {
|
|
98
|
+
(0, vitest_1.it)("returns false when not running", () => {
|
|
99
|
+
const state = (0, state_1.createInitialState)("app");
|
|
100
|
+
(0, vitest_1.expect)((0, state_1.isTimedOut)(state)).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
(0, vitest_1.it)("returns false when within timeout", () => {
|
|
103
|
+
const state = (0, state_1.createInitialState)("app");
|
|
104
|
+
state.status = "running";
|
|
105
|
+
state.dispatched_at = new Date().toISOString();
|
|
106
|
+
state.timeout_min = 10;
|
|
107
|
+
(0, vitest_1.expect)((0, state_1.isTimedOut)(state)).toBe(false);
|
|
108
|
+
});
|
|
109
|
+
(0, vitest_1.it)("returns true when past timeout", () => {
|
|
110
|
+
const state = (0, state_1.createInitialState)("app");
|
|
111
|
+
state.status = "running";
|
|
112
|
+
state.dispatched_at = new Date(Date.now() - 15 * 60_000).toISOString();
|
|
113
|
+
state.timeout_min = 10;
|
|
114
|
+
(0, vitest_1.expect)((0, state_1.isTimedOut)(state)).toBe(true);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.describe)("isMaxedOut", () => {
|
|
118
|
+
(0, vitest_1.it)("returns true at max", () => {
|
|
119
|
+
const state = (0, state_1.createInitialState)("app");
|
|
120
|
+
state.attempt = 5;
|
|
121
|
+
state.max_attempts = 5;
|
|
122
|
+
(0, vitest_1.expect)((0, state_1.isMaxedOut)(state)).toBe(true);
|
|
123
|
+
});
|
|
124
|
+
(0, vitest_1.it)("returns false below max", () => {
|
|
125
|
+
const state = (0, state_1.createInitialState)("app");
|
|
126
|
+
state.attempt = 2;
|
|
127
|
+
state.max_attempts = 5;
|
|
128
|
+
(0, vitest_1.expect)((0, state_1.isMaxedOut)(state)).toBe(false);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
(0, vitest_1.describe)("markRunning", () => {
|
|
132
|
+
(0, vitest_1.it)("sets status and timestamp", () => {
|
|
133
|
+
const state = (0, state_1.createInitialState)("app");
|
|
134
|
+
const running = (0, state_1.markRunning)(state);
|
|
135
|
+
(0, vitest_1.expect)(running.status).toBe("running");
|
|
136
|
+
(0, vitest_1.expect)(running.dispatched_at).toBeTruthy();
|
|
137
|
+
(0, vitest_1.expect)(running.completed_at).toBeNull();
|
|
138
|
+
(0, vitest_1.expect)(running.reason).toBeNull();
|
|
139
|
+
});
|
|
140
|
+
(0, vitest_1.it)("does not mutate original", () => {
|
|
141
|
+
const state = (0, state_1.createInitialState)("app");
|
|
142
|
+
(0, state_1.markRunning)(state);
|
|
143
|
+
(0, vitest_1.expect)(state.status).toBe("pending");
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
(0, vitest_1.describe)("markCompleted", () => {
|
|
147
|
+
(0, vitest_1.it)("sets status and timestamp", () => {
|
|
148
|
+
const state = (0, state_1.markRunning)((0, state_1.createInitialState)("app"));
|
|
149
|
+
const done = (0, state_1.markCompleted)(state, "pass");
|
|
150
|
+
(0, vitest_1.expect)(done.status).toBe("pass");
|
|
151
|
+
(0, vitest_1.expect)(done.completed_at).toBeTruthy();
|
|
152
|
+
});
|
|
153
|
+
(0, vitest_1.it)("sets reason on failure", () => {
|
|
154
|
+
const state = (0, state_1.markRunning)((0, state_1.createInitialState)("app"));
|
|
155
|
+
const failed = (0, state_1.markCompleted)(state, "failing", "needs_clarification");
|
|
156
|
+
(0, vitest_1.expect)(failed.status).toBe("failing");
|
|
157
|
+
(0, vitest_1.expect)(failed.reason).toBe("needs_clarification");
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=state.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../src/__tests__/state.test.ts"],"names":[],"mappings":"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"}
|
package/dist/auto.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auto.ts — Unified entry point for OpenClaw integration
|
|
3
|
+
*
|
|
4
|
+
* Classifies a raw user message into an action (query, dispatch, approve, etc.)
|
|
5
|
+
* using keyword-based matching (zero LLM tokens), then routes to the appropriate
|
|
6
|
+
* orchestrator function.
|
|
7
|
+
*
|
|
8
|
+
* OpenClaw only needs to call:
|
|
9
|
+
* orchestrator auto <project-root> "<user message>"
|
|
10
|
+
*
|
|
11
|
+
* and gets back a JSON result with an `action` field telling it what happened.
|
|
12
|
+
*/
|
|
13
|
+
type Intent = {
|
|
14
|
+
type: "query";
|
|
15
|
+
} | {
|
|
16
|
+
type: "approve";
|
|
17
|
+
note?: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: "reject";
|
|
20
|
+
reason: string;
|
|
21
|
+
note?: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: "start_story";
|
|
24
|
+
storyId: string;
|
|
25
|
+
} | {
|
|
26
|
+
type: "continue";
|
|
27
|
+
} | {
|
|
28
|
+
type: "detect";
|
|
29
|
+
} | {
|
|
30
|
+
type: "list";
|
|
31
|
+
} | {
|
|
32
|
+
type: "custom";
|
|
33
|
+
instruction: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Classify a raw user message into an intent.
|
|
37
|
+
* Pure keyword/regex matching — zero LLM tokens.
|
|
38
|
+
*
|
|
39
|
+
* Priority order matters: more specific patterns are checked first.
|
|
40
|
+
*/
|
|
41
|
+
export declare function classify(message: string): Intent;
|
|
42
|
+
/**
|
|
43
|
+
* Unified orchestrator entry point.
|
|
44
|
+
*
|
|
45
|
+
* Takes a project root and a raw user message, classifies the intent,
|
|
46
|
+
* and routes to the appropriate function. Returns a JSON-serializable result.
|
|
47
|
+
*/
|
|
48
|
+
export declare function auto(projectRoot: string, message: string): Record<string, unknown>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,KAAK,MAAM,GACP;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5C;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsDhD;AA6ED;;;;;GAKG;AACH,wBAAgB,IAAI,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkCzB"}
|
package/dist/auto.js
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* auto.ts — Unified entry point for OpenClaw integration
|
|
4
|
+
*
|
|
5
|
+
* Classifies a raw user message into an action (query, dispatch, approve, etc.)
|
|
6
|
+
* using keyword-based matching (zero LLM tokens), then routes to the appropriate
|
|
7
|
+
* orchestrator function.
|
|
8
|
+
*
|
|
9
|
+
* OpenClaw only needs to call:
|
|
10
|
+
* orchestrator auto <project-root> "<user message>"
|
|
11
|
+
*
|
|
12
|
+
* and gets back a JSON result with an `action` field telling it what happened.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.classify = classify;
|
|
16
|
+
exports.auto = auto;
|
|
17
|
+
const fs_1 = require("fs");
|
|
18
|
+
const path_1 = require("path");
|
|
19
|
+
const dispatch_1 = require("./dispatch");
|
|
20
|
+
// ─── Classifier ──────────────────────────────────────────────────────────────
|
|
21
|
+
/**
|
|
22
|
+
* Classify a raw user message into an intent.
|
|
23
|
+
* Pure keyword/regex matching — zero LLM tokens.
|
|
24
|
+
*
|
|
25
|
+
* Priority order matters: more specific patterns are checked first.
|
|
26
|
+
*/
|
|
27
|
+
function classify(message) {
|
|
28
|
+
const msg = message.trim();
|
|
29
|
+
const lower = msg.toLowerCase();
|
|
30
|
+
// ── Approve ──
|
|
31
|
+
if (/^(approve|核准|lgtm|通過|approved|ok\s*$)/i.test(msg)) {
|
|
32
|
+
const note = msg.replace(/^(approve|核准|lgtm|通過|approved|ok)\s*/i, "").trim() ||
|
|
33
|
+
undefined;
|
|
34
|
+
return { type: "approve", note };
|
|
35
|
+
}
|
|
36
|
+
// ── Reject ──
|
|
37
|
+
if (/^(reject|退回|不行|rejected)/i.test(msg)) {
|
|
38
|
+
const rest = msg
|
|
39
|
+
.replace(/^(reject|退回|不行|rejected)\s*/i, "")
|
|
40
|
+
.trim();
|
|
41
|
+
const { reason, note } = extractRejectReason(rest);
|
|
42
|
+
return { type: "reject", reason, note };
|
|
43
|
+
}
|
|
44
|
+
// ── Start Story (must be before query — "start US-007" is not a query) ──
|
|
45
|
+
const storyMatch = msg.match(/(?:start\s*story|開始\s*story|開新\s*story|start)\s+(US-\d+)/i) || msg.match(/^(US-\d+)/i);
|
|
46
|
+
if (storyMatch) {
|
|
47
|
+
return { type: "start_story", storyId: storyMatch[1] };
|
|
48
|
+
}
|
|
49
|
+
// ── List projects ──
|
|
50
|
+
if (/列出|list.*project|所有專案|all\s*projects/i.test(lower)) {
|
|
51
|
+
return { type: "list" };
|
|
52
|
+
}
|
|
53
|
+
// ── Detect framework ──
|
|
54
|
+
if (/framework|有沒有用|adoption|detect/i.test(lower)) {
|
|
55
|
+
return { type: "detect" };
|
|
56
|
+
}
|
|
57
|
+
// ── Query (information requests — no code changes) ──
|
|
58
|
+
if (isQuery(lower)) {
|
|
59
|
+
return { type: "query" };
|
|
60
|
+
}
|
|
61
|
+
// ── Continue / Dispatch ──
|
|
62
|
+
if (/^(繼續|continue|dispatch|next|下一步|run|執行|go|proceed)\s*$/i.test(msg)) {
|
|
63
|
+
return { type: "continue" };
|
|
64
|
+
}
|
|
65
|
+
// ── Fallback: Custom task ──
|
|
66
|
+
return { type: "custom", instruction: msg };
|
|
67
|
+
}
|
|
68
|
+
/** Check if the message is a read-only query */
|
|
69
|
+
function isQuery(lower) {
|
|
70
|
+
const queryPatterns = [
|
|
71
|
+
/狀態/,
|
|
72
|
+
/status/,
|
|
73
|
+
/什麼步驟/,
|
|
74
|
+
/what\s*step/,
|
|
75
|
+
/which\s*step/,
|
|
76
|
+
/測試/,
|
|
77
|
+
/tests?/,
|
|
78
|
+
/進度/,
|
|
79
|
+
/progress/,
|
|
80
|
+
/還有什麼/,
|
|
81
|
+
/what's\s*next/,
|
|
82
|
+
/what\s*next/,
|
|
83
|
+
/what's\s*left/,
|
|
84
|
+
/history/,
|
|
85
|
+
/歷史/,
|
|
86
|
+
/上次/,
|
|
87
|
+
/last\s*(session|time)/,
|
|
88
|
+
/怎麼樣/,
|
|
89
|
+
/how.*project/,
|
|
90
|
+
/how.*going/,
|
|
91
|
+
/目前/,
|
|
92
|
+
/current/,
|
|
93
|
+
/看一下/,
|
|
94
|
+
/看看/,
|
|
95
|
+
/查一下/,
|
|
96
|
+
/check\s*status/,
|
|
97
|
+
/哪個步驟/,
|
|
98
|
+
/卡住/,
|
|
99
|
+
/blocked/,
|
|
100
|
+
/why.*block/,
|
|
101
|
+
/summary/,
|
|
102
|
+
/摘要/,
|
|
103
|
+
/report/,
|
|
104
|
+
/報告/,
|
|
105
|
+
/打開/,
|
|
106
|
+
/open\s*project/,
|
|
107
|
+
];
|
|
108
|
+
return queryPatterns.some((p) => p.test(lower));
|
|
109
|
+
}
|
|
110
|
+
/** Extract reject reason from the rest of the message */
|
|
111
|
+
function extractRejectReason(rest) {
|
|
112
|
+
const reasonMap = {
|
|
113
|
+
clarification: "needs_clarification",
|
|
114
|
+
"需要說明": "needs_clarification",
|
|
115
|
+
"不清楚": "needs_clarification",
|
|
116
|
+
constitution: "constitution_violation",
|
|
117
|
+
"架構違反": "constitution_violation",
|
|
118
|
+
scope: "scope_warning",
|
|
119
|
+
"範圍": "scope_warning",
|
|
120
|
+
nfr: "nfr_missing",
|
|
121
|
+
timeout: "test_timeout",
|
|
122
|
+
"超時": "test_timeout",
|
|
123
|
+
};
|
|
124
|
+
for (const [keyword, reason] of Object.entries(reasonMap)) {
|
|
125
|
+
if (rest.toLowerCase().includes(keyword)) {
|
|
126
|
+
const note = rest.replace(new RegExp(keyword, "i"), "").trim() || undefined;
|
|
127
|
+
return { reason, note };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Default reason
|
|
131
|
+
return { reason: "needs_clarification", note: rest || undefined };
|
|
132
|
+
}
|
|
133
|
+
// ─── Main Entry Point ───────────────────────────────────────────────────────
|
|
134
|
+
/**
|
|
135
|
+
* Unified orchestrator entry point.
|
|
136
|
+
*
|
|
137
|
+
* Takes a project root and a raw user message, classifies the intent,
|
|
138
|
+
* and routes to the appropriate function. Returns a JSON-serializable result.
|
|
139
|
+
*/
|
|
140
|
+
function auto(projectRoot, message) {
|
|
141
|
+
const intent = classify(message);
|
|
142
|
+
try {
|
|
143
|
+
switch (intent.type) {
|
|
144
|
+
case "query":
|
|
145
|
+
return handleQuery(projectRoot);
|
|
146
|
+
case "approve":
|
|
147
|
+
return handleApprove(projectRoot, intent.note);
|
|
148
|
+
case "reject":
|
|
149
|
+
return handleReject(projectRoot, intent.reason, intent.note);
|
|
150
|
+
case "start_story":
|
|
151
|
+
return handleStartStory(projectRoot, intent.storyId);
|
|
152
|
+
case "continue":
|
|
153
|
+
return handleDispatch(projectRoot);
|
|
154
|
+
case "detect":
|
|
155
|
+
return {
|
|
156
|
+
action: "detected",
|
|
157
|
+
framework: (0, dispatch_1.detectFramework)(projectRoot),
|
|
158
|
+
};
|
|
159
|
+
case "list":
|
|
160
|
+
return {
|
|
161
|
+
action: "listed",
|
|
162
|
+
projects: (0, dispatch_1.listProjects)(projectRoot),
|
|
163
|
+
};
|
|
164
|
+
case "custom":
|
|
165
|
+
return handleCustom(projectRoot, intent.instruction);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
return {
|
|
170
|
+
action: "error",
|
|
171
|
+
message: err.message ?? String(err),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// ─── Intent Handlers ────────────────────────────────────────────────────────
|
|
176
|
+
function handleQuery(projectRoot) {
|
|
177
|
+
const data = (0, dispatch_1.queryProjectStatus)(projectRoot);
|
|
178
|
+
let memory;
|
|
179
|
+
let handoff;
|
|
180
|
+
const memoryPath = (0, path_1.join)(projectRoot, "PROJECT_MEMORY.md");
|
|
181
|
+
if ((0, fs_1.existsSync)(memoryPath)) {
|
|
182
|
+
memory = (0, fs_1.readFileSync)(memoryPath, "utf-8").slice(0, 2000);
|
|
183
|
+
}
|
|
184
|
+
const handoffPath = (0, path_1.join)(projectRoot, ".ai", "HANDOFF.md");
|
|
185
|
+
if ((0, fs_1.existsSync)(handoffPath)) {
|
|
186
|
+
handoff = (0, fs_1.readFileSync)(handoffPath, "utf-8").slice(0, 2000);
|
|
187
|
+
}
|
|
188
|
+
return { action: "query", data, memory, handoff };
|
|
189
|
+
}
|
|
190
|
+
function handleApprove(projectRoot, note) {
|
|
191
|
+
try {
|
|
192
|
+
(0, dispatch_1.approveReview)(projectRoot, note);
|
|
193
|
+
return { action: "approved", note };
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
return { action: "error", message: err.message };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function handleReject(projectRoot, reason, note) {
|
|
200
|
+
try {
|
|
201
|
+
(0, dispatch_1.rejectReview)(projectRoot, reason, note);
|
|
202
|
+
return { action: "rejected", reason, note };
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
return { action: "error", message: err.message };
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function handleStartStory(projectRoot, storyId) {
|
|
209
|
+
(0, dispatch_1.startStory)(projectRoot, storyId);
|
|
210
|
+
return wrapDispatchResult((0, dispatch_1.dispatch)(projectRoot));
|
|
211
|
+
}
|
|
212
|
+
function handleDispatch(projectRoot) {
|
|
213
|
+
return wrapDispatchResult((0, dispatch_1.dispatch)(projectRoot));
|
|
214
|
+
}
|
|
215
|
+
function handleCustom(projectRoot, instruction) {
|
|
216
|
+
const agentTeams = /agent.?teams?|平行|多\s*agent|agents/i.test(instruction);
|
|
217
|
+
(0, dispatch_1.startCustom)(projectRoot, instruction, { agentTeams });
|
|
218
|
+
return wrapDispatchResult((0, dispatch_1.dispatch)(projectRoot));
|
|
219
|
+
}
|
|
220
|
+
/** Convert DispatchResult to AutoResult */
|
|
221
|
+
function wrapDispatchResult(result) {
|
|
222
|
+
switch (result.type) {
|
|
223
|
+
case "dispatched":
|
|
224
|
+
return {
|
|
225
|
+
action: "dispatched",
|
|
226
|
+
step: result.step,
|
|
227
|
+
attempt: result.attempt,
|
|
228
|
+
prompt: result.prompt,
|
|
229
|
+
fw_lv: result.fw_lv,
|
|
230
|
+
};
|
|
231
|
+
case "done":
|
|
232
|
+
return {
|
|
233
|
+
action: "done",
|
|
234
|
+
story: result.story,
|
|
235
|
+
summary: result.summary,
|
|
236
|
+
};
|
|
237
|
+
case "needs_human":
|
|
238
|
+
return {
|
|
239
|
+
action: "needs_human",
|
|
240
|
+
step: result.step,
|
|
241
|
+
message: result.message,
|
|
242
|
+
};
|
|
243
|
+
case "blocked":
|
|
244
|
+
return {
|
|
245
|
+
action: "blocked",
|
|
246
|
+
step: result.step,
|
|
247
|
+
reason: result.reason,
|
|
248
|
+
};
|
|
249
|
+
case "already_running":
|
|
250
|
+
return {
|
|
251
|
+
action: "already_running",
|
|
252
|
+
step: result.step,
|
|
253
|
+
elapsed_min: result.elapsed_min,
|
|
254
|
+
};
|
|
255
|
+
case "timeout":
|
|
256
|
+
return {
|
|
257
|
+
action: "timeout",
|
|
258
|
+
step: result.step,
|
|
259
|
+
elapsed_min: result.elapsed_min,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=auto.js.map
|
package/dist/auto.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
* start-story <project-root> <story-id> Begin a new User Story (micro-waterfall)
|
|
8
8
|
* start-custom <project-root> <instruction> Begin a custom ad-hoc task
|
|
9
9
|
* dispatch <project-root> Dispatch next step (prints prompt)
|
|
10
|
+
* peek <project-root> [FIX P1] Read-only dispatch preview
|
|
10
11
|
* apply-handoff <project-root> Parse HANDOFF.md → update STATE
|
|
11
12
|
* approve <project-root> [note] Approve review step
|
|
12
13
|
* reject <project-root> <reason> [note] Reject review step
|
|
13
14
|
* status <project-root> Print current STATE.json
|
|
14
15
|
*/
|
|
15
16
|
export {};
|
|
17
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
|