myshell-tools 1.0.0 → 2.0.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/CHANGELOG.md +44 -69
- package/LICENSE +21 -21
- package/README.md +178 -318
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/cost.d.ts +36 -0
- package/dist/commands/cost.js +103 -0
- package/dist/commands/cost.js.map +1 -0
- package/dist/commands/doctor.d.ts +36 -0
- package/dist/commands/doctor.js +115 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/login.d.ts +20 -0
- package/dist/commands/login.js +60 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/core/assess.d.ts +25 -0
- package/dist/core/assess.js +142 -0
- package/dist/core/assess.js.map +1 -0
- package/dist/core/classify.d.ts +19 -0
- package/dist/core/classify.js +80 -0
- package/dist/core/classify.js.map +1 -0
- package/dist/core/escalate.d.ts +32 -0
- package/dist/core/escalate.js +57 -0
- package/dist/core/escalate.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/orchestrate.d.ts +42 -0
- package/dist/core/orchestrate.js +439 -0
- package/dist/core/orchestrate.js.map +1 -0
- package/dist/core/policy.d.ts +9 -0
- package/dist/core/policy.js +27 -0
- package/dist/core/policy.js.map +1 -0
- package/dist/core/prompt.d.ts +26 -0
- package/dist/core/prompt.js +125 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/review.d.ts +46 -0
- package/dist/core/review.js +148 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/route.d.ts +28 -0
- package/dist/core/route.js +52 -0
- package/dist/core/route.js.map +1 -0
- package/dist/core/types.d.ts +141 -0
- package/dist/core/types.js +14 -0
- package/dist/core/types.js.map +1 -0
- package/dist/infra/atomic.d.ts +53 -0
- package/dist/infra/atomic.js +171 -0
- package/dist/infra/atomic.js.map +1 -0
- package/dist/infra/clock.d.ts +9 -0
- package/dist/infra/clock.js +15 -0
- package/dist/infra/clock.js.map +1 -0
- package/dist/infra/index.d.ts +9 -0
- package/dist/infra/index.js +7 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/infra/ledger.d.ts +49 -0
- package/dist/infra/ledger.js +90 -0
- package/dist/infra/ledger.js.map +1 -0
- package/dist/infra/paths.d.ts +28 -0
- package/dist/infra/paths.js +38 -0
- package/dist/infra/paths.js.map +1 -0
- package/dist/infra/pricing.d.ts +47 -0
- package/dist/infra/pricing.js +151 -0
- package/dist/infra/pricing.js.map +1 -0
- package/dist/infra/session.d.ts +28 -0
- package/dist/infra/session.js +61 -0
- package/dist/infra/session.js.map +1 -0
- package/dist/interface/render.d.ts +27 -0
- package/dist/interface/render.js +134 -0
- package/dist/interface/render.js.map +1 -0
- package/dist/interface/repl.d.ts +23 -0
- package/dist/interface/repl.js +90 -0
- package/dist/interface/repl.js.map +1 -0
- package/dist/interface/run.d.ts +20 -0
- package/dist/interface/run.js +31 -0
- package/dist/interface/run.js.map +1 -0
- package/dist/providers/claude-parse.d.ts +24 -0
- package/dist/providers/claude-parse.js +113 -0
- package/dist/providers/claude-parse.js.map +1 -0
- package/dist/providers/claude.d.ts +45 -0
- package/dist/providers/claude.js +122 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex-parse.d.ts +32 -0
- package/dist/providers/codex-parse.js +145 -0
- package/dist/providers/codex-parse.js.map +1 -0
- package/dist/providers/codex.d.ts +44 -0
- package/dist/providers/codex.js +124 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/detect.d.ts +49 -0
- package/dist/providers/detect.js +125 -0
- package/dist/providers/detect.js.map +1 -0
- package/dist/providers/errors.d.ts +49 -0
- package/dist/providers/errors.js +189 -0
- package/dist/providers/errors.js.map +1 -0
- package/dist/providers/index.d.ts +9 -0
- package/dist/providers/index.js +7 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/port.d.ts +74 -0
- package/dist/providers/port.js +16 -0
- package/dist/providers/port.js.map +1 -0
- package/dist/providers/registry.d.ts +21 -0
- package/dist/providers/registry.js +34 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/ui/banner.d.ts +19 -0
- package/dist/ui/banner.js +32 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/spinner.d.ts +27 -0
- package/dist/ui/spinner.js +67 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/theme.d.ts +32 -0
- package/dist/ui/theme.js +56 -0
- package/dist/ui/theme.js.map +1 -0
- package/package.json +55 -49
- package/data/orchestrator.json +0 -113
- package/src/auth/recovery.mjs +0 -328
- package/src/auth/refresh.mjs +0 -373
- package/src/chef.mjs +0 -348
- package/src/cli/doctor.mjs +0 -568
- package/src/cli/reset.mjs +0 -447
- package/src/cli/status.mjs +0 -379
- package/src/cli.mjs +0 -429
- package/src/commands/doctor.mjs +0 -375
- package/src/commands/help.mjs +0 -324
- package/src/commands/status.mjs +0 -331
- package/src/monitor/health.mjs +0 -486
- package/src/monitor/performance.mjs +0 -442
- package/src/monitor/report.mjs +0 -535
- package/src/orchestrator/classify.mjs +0 -391
- package/src/orchestrator/confidence.mjs +0 -151
- package/src/orchestrator/handoffs.mjs +0 -231
- package/src/orchestrator/review.mjs +0 -222
- package/src/providers/balance.mjs +0 -201
- package/src/providers/claude.mjs +0 -236
- package/src/providers/codex.mjs +0 -255
- package/src/providers/detect.mjs +0 -185
- package/src/providers/errors.mjs +0 -373
- package/src/providers/select.mjs +0 -162
- package/src/repl-enhanced.mjs +0 -417
- package/src/repl.mjs +0 -321
- package/src/state/archive.mjs +0 -366
- package/src/state/atomic.mjs +0 -116
- package/src/state/cleanup.mjs +0 -440
- package/src/state/recovery.mjs +0 -461
- package/src/state/session.mjs +0 -147
- package/src/ui/errors.mjs +0 -456
- package/src/ui/formatter.mjs +0 -327
- package/src/ui/icons.mjs +0 -318
- package/src/ui/progress.mjs +0 -468
- package/templates/prompts/confidence-format.txt +0 -14
- package/templates/prompts/ic-with-feedback.txt +0 -41
- package/templates/prompts/ic.txt +0 -13
- package/templates/prompts/manager-review.txt +0 -40
- package/templates/prompts/manager.txt +0 -14
- package/templates/prompts/worker.txt +0 -12
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/core/classify.ts — pure task classification.
|
|
3
|
+
*
|
|
4
|
+
* Determines the orchestration tier and security risk level from a free-text
|
|
5
|
+
* task description using keyword/regex signals. No I/O, no time, no randomness.
|
|
6
|
+
*
|
|
7
|
+
* Honesty Contract: no fabricated confidence numbers are produced here.
|
|
8
|
+
* The rationale field names the matched signal so callers can audit decisions.
|
|
9
|
+
*/
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Tier signal tables
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/** Words that signal a manager-tier task (review, planning, architecture, security). */
|
|
14
|
+
const MANAGER_WORDS = /\b(review|plan|design|architect|audit|security|threat|evaluate|assess|complex)\b/i;
|
|
15
|
+
/** Words that signal a worker-tier task (read-only lookups, searches). */
|
|
16
|
+
const WORKER_WORDS = /\b(find|search|grep|locate|list|read[-\s]only|lookup|scan|what\s+is)\b/i;
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Risk signal tables — highest match wins
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/** Critical: auth / secrets / credentials / encryption artefacts. */
|
|
21
|
+
const CRITICAL_RE = /\b(auth|credential|secret|password|token|key|encrypt|certificate)\b|\.env\b/i;
|
|
22
|
+
/** High: payments, deploys, migrations, CI/CD, permissions, schema changes. */
|
|
23
|
+
const HIGH_RE = /\b(login|payment|billing|deploy|migration|ci\/cd|permission|schema)\b/i;
|
|
24
|
+
/** Medium: tests, configs, shared utilities, integrations. */
|
|
25
|
+
const MEDIUM_RE = /\b(test|spec|config|integration|shared|util|lib)\b/i;
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Public API
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
/**
|
|
30
|
+
* Classify a free-text `task` string into a {@link Classification}.
|
|
31
|
+
*
|
|
32
|
+
* Tier priority: manager > worker > ic (ic is the default).
|
|
33
|
+
* Risk priority: critical > high > medium > low (low is the default).
|
|
34
|
+
*
|
|
35
|
+
* @param task - The raw task description from the user.
|
|
36
|
+
*/
|
|
37
|
+
export function classify(task) {
|
|
38
|
+
// --- Tier ---
|
|
39
|
+
let tier;
|
|
40
|
+
let tierSignal;
|
|
41
|
+
if (MANAGER_WORDS.test(task)) {
|
|
42
|
+
tier = 'manager';
|
|
43
|
+
const m = task.match(MANAGER_WORDS);
|
|
44
|
+
tierSignal = m ? `manager keyword '${m[0].toLowerCase()}'` : 'manager keyword';
|
|
45
|
+
}
|
|
46
|
+
else if (WORKER_WORDS.test(task)) {
|
|
47
|
+
tier = 'worker';
|
|
48
|
+
const m = task.match(WORKER_WORDS);
|
|
49
|
+
tierSignal = m ? `worker keyword '${m[0].toLowerCase()}'` : 'worker keyword';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
tier = 'ic';
|
|
53
|
+
tierSignal = 'no tier keyword matched — defaulting to ic';
|
|
54
|
+
}
|
|
55
|
+
// --- Risk ---
|
|
56
|
+
let risk;
|
|
57
|
+
let riskSignal;
|
|
58
|
+
if (CRITICAL_RE.test(task)) {
|
|
59
|
+
risk = 'critical';
|
|
60
|
+
const m = task.match(CRITICAL_RE);
|
|
61
|
+
riskSignal = `critical keyword '${m ? m[0].toLowerCase() : 'unknown'}'`;
|
|
62
|
+
}
|
|
63
|
+
else if (HIGH_RE.test(task)) {
|
|
64
|
+
risk = 'high';
|
|
65
|
+
const m = task.match(HIGH_RE);
|
|
66
|
+
riskSignal = `high keyword '${m ? m[0].toLowerCase() : 'unknown'}'`;
|
|
67
|
+
}
|
|
68
|
+
else if (MEDIUM_RE.test(task)) {
|
|
69
|
+
risk = 'medium';
|
|
70
|
+
const m = task.match(MEDIUM_RE);
|
|
71
|
+
riskSignal = `medium keyword '${m ? m[0].toLowerCase() : 'unknown'}'`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
risk = 'low';
|
|
75
|
+
riskSignal = 'no risk keyword matched — defaulting to low';
|
|
76
|
+
}
|
|
77
|
+
const rationale = `tier: ${tierSignal}; risk: ${riskSignal}`;
|
|
78
|
+
return { tier, risk, rationale };
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/core/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,wFAAwF;AACxF,MAAM,aAAa,GACjB,mFAAmF,CAAC;AAEtF,0EAA0E;AAC1E,MAAM,YAAY,GAChB,yEAAyE,CAAC;AAE5E,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E,qEAAqE;AACrE,MAAM,WAAW,GACf,8EAA8E,CAAC;AAEjF,+EAA+E;AAC/E,MAAM,OAAO,GACX,wEAAwE,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,SAAS,GACb,qDAAqD,CAAC;AAExD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,eAAe;IACf,IAAI,IAAU,CAAC;IACf,IAAI,UAAkB,CAAC;IAEvB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,GAAG,SAAS,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACpC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACjF,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,QAAQ,CAAC;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACnC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,IAAI,CAAC;QACZ,UAAU,GAAG,4CAA4C,CAAC;IAC5D,CAAC;IAED,eAAe;IACf,IAAI,IAAU,CAAC;IACf,IAAI,UAAkB,CAAC;IAEvB,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,UAAU,CAAC;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC;IAC1E,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,MAAM,CAAC;QACd,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC;IACtE,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,QAAQ,CAAC;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,KAAK,CAAC;QACb,UAAU,GAAG,6CAA6C,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,UAAU,WAAW,UAAU,EAAE,CAAC;IAE7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/core/escalate.ts — pure escalation helpers.
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for determining the next tier in the escalation chain
|
|
5
|
+
* and selecting a cross-vendor reviewer.
|
|
6
|
+
*
|
|
7
|
+
* Pure module: no I/O, no time, no randomness.
|
|
8
|
+
*/
|
|
9
|
+
import type { Tier } from './types.js';
|
|
10
|
+
import type { ProviderId } from '../providers/port.js';
|
|
11
|
+
/**
|
|
12
|
+
* Return the next tier up from the given tier, or null if already at the top.
|
|
13
|
+
*
|
|
14
|
+
* Chain: worker → ic → manager → null
|
|
15
|
+
*
|
|
16
|
+
* @param tier - The current orchestration tier.
|
|
17
|
+
*/
|
|
18
|
+
export declare function nextTierUp(tier: Tier): Tier | null;
|
|
19
|
+
/**
|
|
20
|
+
* Pick a reviewer provider from the available list, preferring cross-vendor
|
|
21
|
+
* review over same-vendor review.
|
|
22
|
+
*
|
|
23
|
+
* Algorithm:
|
|
24
|
+
* 1. If `available` is empty, return null.
|
|
25
|
+
* 2. Prefer a provider with a DIFFERENT id than `primary` (cross-vendor review).
|
|
26
|
+
* 3. If all available are the same vendor as primary, return `primary` if it
|
|
27
|
+
* is in `available`, else return null.
|
|
28
|
+
*
|
|
29
|
+
* @param available - Provider IDs that are currently reachable.
|
|
30
|
+
* @param primary - The provider ID that ran the IC work being reviewed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function pickReviewer(available: ProviderId[], primary: ProviderId): ProviderId | null;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/core/escalate.ts — pure escalation helpers.
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for determining the next tier in the escalation chain
|
|
5
|
+
* and selecting a cross-vendor reviewer.
|
|
6
|
+
*
|
|
7
|
+
* Pure module: no I/O, no time, no randomness.
|
|
8
|
+
*/
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Tier chain
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Return the next tier up from the given tier, or null if already at the top.
|
|
14
|
+
*
|
|
15
|
+
* Chain: worker → ic → manager → null
|
|
16
|
+
*
|
|
17
|
+
* @param tier - The current orchestration tier.
|
|
18
|
+
*/
|
|
19
|
+
export function nextTierUp(tier) {
|
|
20
|
+
switch (tier) {
|
|
21
|
+
case 'worker':
|
|
22
|
+
return 'ic';
|
|
23
|
+
case 'ic':
|
|
24
|
+
return 'manager';
|
|
25
|
+
case 'manager':
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Reviewer selection
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
/**
|
|
33
|
+
* Pick a reviewer provider from the available list, preferring cross-vendor
|
|
34
|
+
* review over same-vendor review.
|
|
35
|
+
*
|
|
36
|
+
* Algorithm:
|
|
37
|
+
* 1. If `available` is empty, return null.
|
|
38
|
+
* 2. Prefer a provider with a DIFFERENT id than `primary` (cross-vendor review).
|
|
39
|
+
* 3. If all available are the same vendor as primary, return `primary` if it
|
|
40
|
+
* is in `available`, else return null.
|
|
41
|
+
*
|
|
42
|
+
* @param available - Provider IDs that are currently reachable.
|
|
43
|
+
* @param primary - The provider ID that ran the IC work being reviewed.
|
|
44
|
+
*/
|
|
45
|
+
export function pickReviewer(available, primary) {
|
|
46
|
+
if (available.length === 0)
|
|
47
|
+
return null;
|
|
48
|
+
// Prefer a different vendor (cross-vendor review is the goal)
|
|
49
|
+
const crossVendor = available.find((id) => id !== primary);
|
|
50
|
+
if (crossVendor !== undefined)
|
|
51
|
+
return crossVendor;
|
|
52
|
+
// All available are same vendor — return primary if it's in the list
|
|
53
|
+
if (available.includes(primary))
|
|
54
|
+
return primary;
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=escalate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalate.js","sourceRoot":"","sources":["../../src/core/escalate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,IAAI;YACP,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,SAAuB,EAAE,OAAmB;IACvE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,8DAA8D;IAC9D,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC3D,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAElD,qEAAqE;IACrE,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAEhD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/core/index.ts — public surface of the pure orchestration core.
|
|
3
|
+
*/
|
|
4
|
+
export { orchestrate } from './orchestrate.js';
|
|
5
|
+
export { classify } from './classify.js';
|
|
6
|
+
export { route } from './route.js';
|
|
7
|
+
export { assess } from './assess.js';
|
|
8
|
+
export { buildPrompt } from './prompt.js';
|
|
9
|
+
export { DEFAULT_POLICY } from './policy.js';
|
|
10
|
+
export { nextTierUp, pickReviewer } from './escalate.js';
|
|
11
|
+
export { buildReviewPrompt, parseReviewVerdict } from './review.js';
|
|
12
|
+
export type { ReviewVerdict } from './review.js';
|
|
13
|
+
export type { Tier, Risk, Classification, RouteDecision, Assessment, Clock, SessionEntry, SessionWriter, LedgerEntry, LedgerWriter, Policy, OrchestrateDeps, CoreEvent, } from './types.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/core/index.ts — public surface of the pure orchestration core.
|
|
3
|
+
*/
|
|
4
|
+
export { orchestrate } from './orchestrate.js';
|
|
5
|
+
export { classify } from './classify.js';
|
|
6
|
+
export { route } from './route.js';
|
|
7
|
+
export { assess } from './assess.js';
|
|
8
|
+
export { buildPrompt } from './prompt.js';
|
|
9
|
+
export { DEFAULT_POLICY } from './policy.js';
|
|
10
|
+
export { nextTierUp, pickReviewer } from './escalate.js';
|
|
11
|
+
export { buildReviewPrompt, parseReviewVerdict } from './review.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/core/orchestrate.ts — the bounded escalation + review loop.
|
|
3
|
+
*
|
|
4
|
+
* Implements the Phase-2 multi-tier loop:
|
|
5
|
+
* classify → route → run IC → (optionally) cross-vendor review → assess →
|
|
6
|
+
* escalate/retry/accept → final
|
|
7
|
+
*
|
|
8
|
+
* Control-flow overview:
|
|
9
|
+
* 1. Classify the task.
|
|
10
|
+
* 2. If no providers → notice(error) + final(false); return.
|
|
11
|
+
* 3. Append user session entry once.
|
|
12
|
+
* 4. Loop (≤ maxAttempts):
|
|
13
|
+
* a. Route to provider+model for currentTier.
|
|
14
|
+
* b. Yield tier-start → stream provider events → yield tier-done.
|
|
15
|
+
* c. Provider failure → escalate to manager (or break if already there).
|
|
16
|
+
* d. If IC tier + shouldReview(classification, assessment):
|
|
17
|
+
* run cross-vendor reviewer at manager tier.
|
|
18
|
+
* approve → accept; revise → retry IC with notes; escalate → escalate tier.
|
|
19
|
+
* e. Low-confidence / escalate signal → nextTierUp → continue.
|
|
20
|
+
* f. All good → yield final(success:true); return.
|
|
21
|
+
* 5. Loop exhausted or broke on failure → yield final(success:false).
|
|
22
|
+
*
|
|
23
|
+
* Purity rules (enforced by test/arch/guards.test.ts):
|
|
24
|
+
* - No imports of fs / path / child_process
|
|
25
|
+
* - No console.* calls
|
|
26
|
+
* - No Date.now() / Math.random() / new Date() — use deps.clock
|
|
27
|
+
* - No process.exit() — only src/cli.ts may terminate the process
|
|
28
|
+
*/
|
|
29
|
+
import type { CoreEvent, OrchestrateDeps } from './types.js';
|
|
30
|
+
/**
|
|
31
|
+
* Orchestrate a task through the bounded escalation + review loop.
|
|
32
|
+
*
|
|
33
|
+
* Yields a sequence of {@link CoreEvent} objects.
|
|
34
|
+
* The interface/render layer drives the generator and surfaces events to
|
|
35
|
+
* the user.
|
|
36
|
+
*
|
|
37
|
+
* @param task - The raw user task description.
|
|
38
|
+
* @param deps - Injected dependencies (providers, clock, session, ledger, policy, …).
|
|
39
|
+
* @param signal - AbortSignal; when aborted the generator stops and yields a
|
|
40
|
+
* notice(warn, 'cancelled') followed by final(success:false).
|
|
41
|
+
*/
|
|
42
|
+
export declare function orchestrate(task: string, deps: OrchestrateDeps, signal: AbortSignal): AsyncGenerator<CoreEvent>;
|