poly-weaver 0.12.4 → 0.13.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/agents/implementors/adapter.d.ts +1 -0
- package/dist/agents/implementors/adapter.d.ts.map +1 -1
- package/dist/agents/implementors/adapter.js +4 -4
- package/dist/agents/implementors/adapter.js.map +1 -1
- package/dist/agents/implementors/handler.d.ts.map +1 -1
- package/dist/agents/implementors/handler.js +4 -0
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/implementors/prompts.d.ts +4 -4
- package/dist/agents/implementors/prompts.d.ts.map +1 -1
- package/dist/agents/implementors/prompts.js +25 -20
- package/dist/agents/implementors/prompts.js.map +1 -1
- package/dist/agents/implementors/types.d.ts +5 -4
- package/dist/agents/implementors/types.d.ts.map +1 -1
- package/dist/agents/interviewers/adapter.d.ts +0 -2
- package/dist/agents/interviewers/adapter.d.ts.map +1 -1
- package/dist/agents/interviewers/adapter.js +0 -15
- package/dist/agents/interviewers/adapter.js.map +1 -1
- package/dist/agents/interviewers/handler.d.ts.map +1 -1
- package/dist/agents/interviewers/handler.js +1 -18
- package/dist/agents/interviewers/handler.js.map +1 -1
- package/dist/agents/reviewers/adapter.d.ts.map +1 -1
- package/dist/agents/reviewers/adapter.js +18 -3
- package/dist/agents/reviewers/adapter.js.map +1 -1
- package/dist/agents/reviewers/dsl.d.ts +1 -0
- package/dist/agents/reviewers/dsl.d.ts.map +1 -1
- package/dist/agents/reviewers/dsl.js.map +1 -1
- package/dist/agents/reviewers/handler.d.ts.map +1 -1
- package/dist/agents/reviewers/handler.js +5 -3
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/reviewers/index.d.ts +1 -1
- package/dist/agents/reviewers/index.d.ts.map +1 -1
- package/dist/agents/reviewers/index.js +8 -1
- package/dist/agents/reviewers/index.js.map +1 -1
- package/dist/agents/reviewers/prompts.d.ts +8 -5
- package/dist/agents/reviewers/prompts.d.ts.map +1 -1
- package/dist/agents/reviewers/prompts.js +50 -27
- package/dist/agents/reviewers/prompts.js.map +1 -1
- package/dist/agents/reviewers/types.d.ts +16 -2
- package/dist/agents/reviewers/types.d.ts.map +1 -1
- package/dist/agents/reviewers/types.js.map +1 -1
- package/dist/agents/runner.d.ts +4 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +25 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/session-resume.d.ts +10 -2
- package/dist/agents/session-resume.d.ts.map +1 -1
- package/dist/agents/session-resume.js +28 -4
- package/dist/agents/session-resume.js.map +1 -1
- package/dist/agents/simplifiers/adapter.d.ts +2 -5
- package/dist/agents/simplifiers/adapter.d.ts.map +1 -1
- package/dist/agents/simplifiers/adapter.js +17 -7
- package/dist/agents/simplifiers/adapter.js.map +1 -1
- package/dist/agents/simplifiers/dsl.d.ts +13 -0
- package/dist/agents/simplifiers/dsl.d.ts.map +1 -1
- package/dist/agents/simplifiers/dsl.js +8 -1
- package/dist/agents/simplifiers/dsl.js.map +1 -1
- package/dist/agents/simplifiers/handler.d.ts +3 -0
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +130 -12
- package/dist/agents/simplifiers/handler.js.map +1 -1
- package/dist/agents/simplifiers/index.d.ts +1 -0
- package/dist/agents/simplifiers/index.d.ts.map +1 -1
- package/dist/agents/simplifiers/index.js +2 -5
- package/dist/agents/simplifiers/index.js.map +1 -1
- package/dist/agents/simplifiers/plan.d.ts +52 -0
- package/dist/agents/simplifiers/plan.d.ts.map +1 -0
- package/dist/agents/simplifiers/plan.js +176 -0
- package/dist/agents/simplifiers/plan.js.map +1 -0
- package/dist/agents/simplifiers/prompts.d.ts +5 -10
- package/dist/agents/simplifiers/prompts.d.ts.map +1 -1
- package/dist/agents/simplifiers/prompts.js +81 -15
- package/dist/agents/simplifiers/prompts.js.map +1 -1
- package/dist/agents/simplifiers/types.d.ts +22 -5
- package/dist/agents/simplifiers/types.d.ts.map +1 -1
- package/dist/ansi.d.ts +1 -0
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +1 -0
- package/dist/ansi.js.map +1 -1
- package/dist/auto-update/check-agent-updates.d.ts +1 -0
- package/dist/auto-update/check-agent-updates.d.ts.map +1 -1
- package/dist/auto-update/check-agent-updates.js +80 -8
- package/dist/auto-update/check-agent-updates.js.map +1 -1
- package/dist/auto-update/detect-agents.d.ts +1 -0
- package/dist/auto-update/detect-agents.d.ts.map +1 -1
- package/dist/auto-update/detect-agents.js +1 -1
- package/dist/auto-update/detect-agents.js.map +1 -1
- package/dist/auto-update/install-agents.js +4 -1
- package/dist/auto-update/install-agents.js.map +1 -1
- package/dist/cli.js +25 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -1
- package/dist/dsl.d.ts +1 -1
- package/dist/dsl.d.ts.map +1 -1
- package/dist/flow/built-in/default-factory.js +1 -1
- package/dist/flow/built-in/default-factory.js.map +1 -1
- package/dist/flow/built-in/simplify-factory.d.ts +23 -0
- package/dist/flow/built-in/simplify-factory.d.ts.map +1 -0
- package/dist/flow/built-in/simplify-factory.js +183 -0
- package/dist/flow/built-in/simplify-factory.js.map +1 -0
- package/dist/flow/built-in/simplify.d.ts +16 -0
- package/dist/flow/built-in/simplify.d.ts.map +1 -0
- package/dist/flow/built-in/simplify.js +18 -0
- package/dist/flow/built-in/simplify.js.map +1 -0
- package/dist/flow/custom/load.d.ts.map +1 -1
- package/dist/flow/custom/load.js +1 -0
- package/dist/flow/custom/load.js.map +1 -1
- package/dist/flow/dsl.d.ts +4 -0
- package/dist/flow/dsl.d.ts.map +1 -1
- package/dist/flow/dsl.js +4 -0
- package/dist/flow/dsl.js.map +1 -1
- package/dist/flow/executor.js +1 -1
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/params.d.ts.map +1 -1
- package/dist/flow/params.js +25 -5
- package/dist/flow/params.js.map +1 -1
- package/dist/flow/types.d.ts +22 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js.map +1 -1
- package/dist/git-info.d.ts +17 -0
- package/dist/git-info.d.ts.map +1 -1
- package/dist/git-info.js +117 -1
- package/dist/git-info.js.map +1 -1
- package/dist/markdown.js +28 -8
- package/dist/markdown.js.map +1 -1
- package/dist/offscreen/agent-viewer.d.ts.map +1 -1
- package/dist/offscreen/agent-viewer.js +11 -3
- package/dist/offscreen/agent-viewer.js.map +1 -1
- package/dist/offscreen/artifact-pane.d.ts +8 -2
- package/dist/offscreen/artifact-pane.d.ts.map +1 -1
- package/dist/offscreen/artifact-pane.js +32 -3
- package/dist/offscreen/artifact-pane.js.map +1 -1
- package/dist/offscreen/controller.d.ts +3 -0
- package/dist/offscreen/controller.d.ts.map +1 -1
- package/dist/offscreen/controller.js +30 -8
- package/dist/offscreen/controller.js.map +1 -1
- package/dist/offscreen/fork-busy.d.ts +3 -20
- package/dist/offscreen/fork-busy.d.ts.map +1 -1
- package/dist/offscreen/fork-busy.js +7 -76
- package/dist/offscreen/fork-busy.js.map +1 -1
- package/dist/offscreen/fork-launch.d.ts +3 -34
- package/dist/offscreen/fork-launch.d.ts.map +1 -1
- package/dist/offscreen/fork-launch.js +4 -102
- package/dist/offscreen/fork-launch.js.map +1 -1
- package/dist/offscreen/panes.d.ts +1 -0
- package/dist/offscreen/panes.d.ts.map +1 -1
- package/dist/offscreen/resolve.d.ts.map +1 -1
- package/dist/offscreen/resolve.js +16 -0
- package/dist/offscreen/resolve.js.map +1 -1
- package/dist/offscreen/split-inquiry.d.ts +2 -0
- package/dist/offscreen/split-inquiry.d.ts.map +1 -1
- package/dist/offscreen/split-inquiry.js +9 -0
- package/dist/offscreen/split-inquiry.js.map +1 -1
- package/dist/orchestrator.d.ts +14 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +70 -0
- package/dist/orchestrator.js.map +1 -1
- package/dist/preview-panel.d.ts +7 -1
- package/dist/preview-panel.d.ts.map +1 -1
- package/dist/preview-panel.js +93 -32
- package/dist/preview-panel.js.map +1 -1
- package/dist/providers/claude/strategy.d.ts +12 -1
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +135 -2
- package/dist/providers/claude/strategy.js.map +1 -1
- package/dist/providers/claude/trust.d.ts +2 -0
- package/dist/providers/claude/trust.d.ts.map +1 -0
- package/dist/providers/claude/trust.js +22 -0
- package/dist/providers/claude/trust.js.map +1 -0
- package/dist/providers/codex/config.js +1 -1
- package/dist/providers/codex/config.js.map +1 -1
- package/dist/providers/codex/strategy.d.ts +12 -1
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +126 -2
- package/dist/providers/codex/strategy.js.map +1 -1
- package/dist/providers/codex/trust.d.ts +2 -0
- package/dist/providers/codex/trust.d.ts.map +1 -0
- package/dist/providers/codex/trust.js +92 -0
- package/dist/providers/codex/trust.js.map +1 -0
- package/dist/providers/copilot/completion.d.ts +5 -3
- package/dist/providers/copilot/completion.d.ts.map +1 -1
- package/dist/providers/copilot/completion.js +188 -16
- package/dist/providers/copilot/completion.js.map +1 -1
- package/dist/providers/copilot/strategy.d.ts +13 -1
- package/dist/providers/copilot/strategy.d.ts.map +1 -1
- package/dist/providers/copilot/strategy.js +189 -2
- package/dist/providers/copilot/strategy.js.map +1 -1
- package/dist/providers/copilot/trust.d.ts +2 -0
- package/dist/providers/copilot/trust.d.ts.map +1 -0
- package/dist/providers/copilot/trust.js +45 -0
- package/dist/providers/copilot/trust.js.map +1 -0
- package/dist/providers/fork.d.ts +64 -0
- package/dist/providers/fork.d.ts.map +1 -0
- package/dist/providers/fork.js +2 -0
- package/dist/providers/fork.js.map +1 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/option-catalog.d.ts +3 -0
- package/dist/providers/option-catalog.d.ts.map +1 -1
- package/dist/providers/option-catalog.js +30 -128
- package/dist/providers/option-catalog.js.map +1 -1
- package/dist/providers/trust-utils.d.ts +7 -0
- package/dist/providers/trust-utils.d.ts.map +1 -0
- package/dist/providers/trust-utils.js +49 -0
- package/dist/providers/trust-utils.js.map +1 -0
- package/dist/providers/trust.d.ts +1 -4
- package/dist/providers/trust.d.ts.map +1 -1
- package/dist/providers/trust.js +3 -204
- package/dist/providers/trust.js.map +1 -1
- package/dist/providers/types.d.ts +46 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/simplify-scope-gate.d.ts +10 -0
- package/dist/simplify-scope-gate.d.ts.map +1 -0
- package/dist/simplify-scope-gate.js +60 -0
- package/dist/simplify-scope-gate.js.map +1 -0
- package/dist/startup-tui.d.ts +10 -1
- package/dist/startup-tui.d.ts.map +1 -1
- package/dist/startup-tui.js +131 -35
- package/dist/startup-tui.js.map +1 -1
- package/dist/user/candidate-pushback-handler.d.ts +13 -0
- package/dist/user/candidate-pushback-handler.d.ts.map +1 -0
- package/dist/user/candidate-pushback-handler.js +183 -0
- package/dist/user/candidate-pushback-handler.js.map +1 -0
- package/dist/user/curate-prompt.d.ts +29 -1
- package/dist/user/curate-prompt.d.ts.map +1 -1
- package/dist/user/curate-prompt.js +32 -5
- package/dist/user/curate-prompt.js.map +1 -1
- package/dist/user/handler.d.ts.map +1 -1
- package/dist/user/handler.js +23 -0
- package/dist/user/handler.js.map +1 -1
- package/dist/user/host-curate-prompt.d.ts +5 -5
- package/dist/user/host-curate-prompt.d.ts.map +1 -1
- package/dist/user/host-curate-prompt.js +204 -91
- package/dist/user/host-curate-prompt.js.map +1 -1
- package/dist/user/issue-inquiry.d.ts +2 -0
- package/dist/user/issue-inquiry.d.ts.map +1 -1
- package/dist/user/issue-inquiry.js +6 -0
- package/dist/user/issue-inquiry.js.map +1 -1
- package/dist/user/plan-pane.d.ts +3 -0
- package/dist/user/plan-pane.d.ts.map +1 -1
- package/dist/user/plan-pane.js +29 -16
- package/dist/user/plan-pane.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { parse as parsePath, resolve } from "node:path";
|
|
3
|
+
export function normalizeCopilotTrustPath(value) {
|
|
4
|
+
return trimTrailingSeparators(resolve(value));
|
|
5
|
+
}
|
|
6
|
+
export function compareCopilotPaths(a, b) {
|
|
7
|
+
const left = normalizeCopilotTrustPath(a);
|
|
8
|
+
const right = normalizeCopilotTrustPath(b);
|
|
9
|
+
return process.platform === "win32"
|
|
10
|
+
? left.toLowerCase() === right.toLowerCase()
|
|
11
|
+
: left === right;
|
|
12
|
+
}
|
|
13
|
+
export async function readTextIfExists(path) {
|
|
14
|
+
try {
|
|
15
|
+
return await readFile(path, "utf8");
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
if (err.code === "ENOENT")
|
|
19
|
+
return undefined;
|
|
20
|
+
throw err;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function parseJsonObject(content, path) {
|
|
24
|
+
const parsed = JSON.parse(content);
|
|
25
|
+
if (!isRecord(parsed)) {
|
|
26
|
+
throw new Error(`${path} must contain a JSON object`);
|
|
27
|
+
}
|
|
28
|
+
return parsed;
|
|
29
|
+
}
|
|
30
|
+
export function tomlBasicString(value) {
|
|
31
|
+
return `"${value
|
|
32
|
+
.replace(/\\/g, "\\\\")
|
|
33
|
+
.replace(/"/g, '\\"')
|
|
34
|
+
.replace(/\r/g, "\\r")
|
|
35
|
+
.replace(/\n/g, "\\n")
|
|
36
|
+
.replace(/\t/g, "\\t")}"`;
|
|
37
|
+
}
|
|
38
|
+
export function isRecord(value) {
|
|
39
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
40
|
+
}
|
|
41
|
+
function trimTrailingSeparators(path) {
|
|
42
|
+
const root = parsePath(path).root;
|
|
43
|
+
let result = path;
|
|
44
|
+
while (result.length > root.length && /[\\/]/.test(result[result.length - 1])) {
|
|
45
|
+
result = result.slice(0, -1);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=trust-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-utils.js","sourceRoot":"","sources":["../../src/providers/trust-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAS,EAAE,CAAS;IACtD,MAAM,IAAI,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QACjC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;QAC5C,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACvE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,IAAY;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,IAAI,KAAK;SACb,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAClC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DriverName } from "../flow/types.js";
|
|
2
2
|
import type { OrchestrationOutput } from "../terminal/output.js";
|
|
3
|
+
export { compareCopilotPaths, isRecord, normalizeCopilotTrustPath, tomlBasicString, } from "./trust-utils.js";
|
|
3
4
|
export interface ProviderTrustResult {
|
|
4
5
|
allSucceeded: boolean;
|
|
5
6
|
failed: DriverName[];
|
|
@@ -7,8 +8,4 @@ export interface ProviderTrustResult {
|
|
|
7
8
|
export declare function ensureProviderTrust(providers: Set<DriverName>, workdir: string, opts: {
|
|
8
9
|
output: OrchestrationOutput;
|
|
9
10
|
}): Promise<ProviderTrustResult>;
|
|
10
|
-
export declare function normalizeCopilotTrustPath(value: string): string;
|
|
11
|
-
export declare function compareCopilotPaths(a: string, b: string): boolean;
|
|
12
|
-
export declare function tomlBasicString(value: string): string;
|
|
13
|
-
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
14
11
|
//# sourceMappingURL=trust.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/providers/trust.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/providers/trust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,yBAAyB,EACzB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,EAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAe9B"}
|
package/dist/providers/trust.js
CHANGED
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { dirname, join, parse as parsePath, resolve } from "node:path";
|
|
4
|
-
import { parse as parseToml } from "smol-toml";
|
|
1
|
+
import { resolveProvider } from "./registry.js";
|
|
2
|
+
export { compareCopilotPaths, isRecord, normalizeCopilotTrustPath, tomlBasicString, } from "./trust-utils.js";
|
|
5
3
|
export async function ensureProviderTrust(providers, workdir, opts) {
|
|
6
4
|
const failed = [];
|
|
7
5
|
for (const provider of providers) {
|
|
8
6
|
try {
|
|
9
|
-
|
|
10
|
-
case "claude":
|
|
11
|
-
await ensureClaudeTrust(workdir);
|
|
12
|
-
break;
|
|
13
|
-
case "codex":
|
|
14
|
-
await ensureCodexTrust(workdir);
|
|
15
|
-
break;
|
|
16
|
-
case "copilot":
|
|
17
|
-
await ensureCopilotTrust(workdir);
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
7
|
+
await resolveProvider(provider).ensureTrust(workdir);
|
|
20
8
|
}
|
|
21
9
|
catch (err) {
|
|
22
10
|
failed.push(provider);
|
|
@@ -25,195 +13,6 @@ export async function ensureProviderTrust(providers, workdir, opts) {
|
|
|
25
13
|
}
|
|
26
14
|
return { allSucceeded: failed.length === 0, failed };
|
|
27
15
|
}
|
|
28
|
-
export function normalizeCopilotTrustPath(value) {
|
|
29
|
-
return trimTrailingSeparators(resolve(value));
|
|
30
|
-
}
|
|
31
|
-
export function compareCopilotPaths(a, b) {
|
|
32
|
-
const left = normalizeCopilotTrustPath(a);
|
|
33
|
-
const right = normalizeCopilotTrustPath(b);
|
|
34
|
-
return process.platform === "win32"
|
|
35
|
-
? left.toLowerCase() === right.toLowerCase()
|
|
36
|
-
: left === right;
|
|
37
|
-
}
|
|
38
|
-
async function ensureClaudeTrust(workdir) {
|
|
39
|
-
const configPath = join(homedir(), ".claude.json");
|
|
40
|
-
const key = workdir.replace(/\\/g, "/");
|
|
41
|
-
const content = await readTextIfExists(configPath);
|
|
42
|
-
const config = content === undefined
|
|
43
|
-
? {}
|
|
44
|
-
: parseJsonObject(content, configPath);
|
|
45
|
-
const projects = isRecord(config.projects) ? config.projects : {};
|
|
46
|
-
config.projects = projects;
|
|
47
|
-
const project = isRecord(projects[key]) ? projects[key] : {};
|
|
48
|
-
if (project.hasTrustDialogAccepted === true)
|
|
49
|
-
return;
|
|
50
|
-
project.hasTrustDialogAccepted = true;
|
|
51
|
-
projects[key] = project;
|
|
52
|
-
await mkdir(dirname(configPath), { recursive: true });
|
|
53
|
-
await writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
54
|
-
}
|
|
55
|
-
async function ensureCodexTrust(workdir) {
|
|
56
|
-
const configDir = join(homedir(), ".codex");
|
|
57
|
-
const configPath = join(configDir, "config.toml");
|
|
58
|
-
const projectPath = normalizeCodexProjectPath(workdir);
|
|
59
|
-
await mkdir(configDir, { recursive: true });
|
|
60
|
-
const content = await readTextIfExists(configPath) ?? "";
|
|
61
|
-
if (content.length > 0) {
|
|
62
|
-
const parsed = parseToml(content);
|
|
63
|
-
if (codexProjectIsTrusted(parsed, projectPath))
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const updated = updateCodexTrust(content, projectPath);
|
|
67
|
-
const updatedParsed = parseToml(updated);
|
|
68
|
-
if (!codexProjectIsTrusted(updatedParsed, projectPath)) {
|
|
69
|
-
throw new Error(`Codex trust entry was not written for ${projectPath}`);
|
|
70
|
-
}
|
|
71
|
-
if (updated !== content) {
|
|
72
|
-
await writeFile(configPath, updated, "utf8");
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async function ensureCopilotTrust(workdir) {
|
|
76
|
-
const configDir = join(homedir(), ".copilot");
|
|
77
|
-
const configPath = join(configDir, "config.json");
|
|
78
|
-
const normalizedWorkdir = normalizeCopilotTrustPath(workdir);
|
|
79
|
-
await mkdir(configDir, { recursive: true });
|
|
80
|
-
const content = await readTextIfExists(configPath) ?? "";
|
|
81
|
-
const { prefix, body, eol } = splitLeadingJsonComments(content);
|
|
82
|
-
const config = body.trim() === ""
|
|
83
|
-
? {}
|
|
84
|
-
: parseJsonObject(body, configPath);
|
|
85
|
-
const trustedFolders = Array.isArray(config.trustedFolders)
|
|
86
|
-
? [...config.trustedFolders]
|
|
87
|
-
: [];
|
|
88
|
-
const alreadyTrusted = trustedFolders.some((value) => typeof value === "string" && compareCopilotPaths(value, normalizedWorkdir));
|
|
89
|
-
if (alreadyTrusted)
|
|
90
|
-
return;
|
|
91
|
-
trustedFolders.push(normalizedWorkdir);
|
|
92
|
-
config.trustedFolders = trustedFolders;
|
|
93
|
-
const json = JSON.stringify(config, null, 2).replace(/\n/g, eol);
|
|
94
|
-
await writeFile(configPath, `${prefix}${json}${eol}`, "utf8");
|
|
95
|
-
}
|
|
96
|
-
function updateCodexTrust(content, projectPath) {
|
|
97
|
-
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
98
|
-
const lines = content === "" ? [] : content.split(/\r?\n/);
|
|
99
|
-
const start = lines.findIndex((line) => isTargetCodexProjectHeader(line, projectPath));
|
|
100
|
-
if (start === -1) {
|
|
101
|
-
const header = codexProjectHeaders(projectPath)[0];
|
|
102
|
-
const prefix = content === "" ? "" : content.endsWith("\n") ? content : `${content}${eol}`;
|
|
103
|
-
const separator = prefix === "" || prefix.endsWith(`${eol}${eol}`) ? "" : eol;
|
|
104
|
-
return `${prefix}${separator}${header}${eol}trust_level = "trusted"${eol}`;
|
|
105
|
-
}
|
|
106
|
-
let end = lines.length;
|
|
107
|
-
for (let index = start + 1; index < lines.length; index++) {
|
|
108
|
-
if (/^\s*\[[^\]]+\]\s*(?:#.*)?$/.test(lines[index])) {
|
|
109
|
-
end = index;
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
for (let index = start + 1; index < end; index++) {
|
|
114
|
-
if (/^\s*trust_level\s*=/.test(lines[index])) {
|
|
115
|
-
if (lines[index].trim() === 'trust_level = "trusted"')
|
|
116
|
-
return content;
|
|
117
|
-
lines[index] = 'trust_level = "trusted"';
|
|
118
|
-
return lines.join(eol);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
lines.splice(start + 1, 0, 'trust_level = "trusted"');
|
|
122
|
-
return lines.join(eol);
|
|
123
|
-
}
|
|
124
|
-
function isTargetCodexProjectHeader(line, projectPath) {
|
|
125
|
-
if (!/^\s*\[/.test(line))
|
|
126
|
-
return false;
|
|
127
|
-
try {
|
|
128
|
-
const parsed = parseToml(`${line}\n__poly_weaver_marker = true\n`);
|
|
129
|
-
const projects = isRecord(parsed.projects) ? parsed.projects : undefined;
|
|
130
|
-
const project = projects && isRecord(projects[projectPath])
|
|
131
|
-
? projects[projectPath]
|
|
132
|
-
: undefined;
|
|
133
|
-
return project?.__poly_weaver_marker === true;
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
function codexProjectHeaders(projectPath) {
|
|
140
|
-
const literal = tomlLiteralString(projectPath);
|
|
141
|
-
const headers = literal ? [`[projects.${literal}]`] : [];
|
|
142
|
-
headers.push(`[projects.${tomlBasicString(projectPath)}]`);
|
|
143
|
-
return headers;
|
|
144
|
-
}
|
|
145
|
-
function tomlLiteralString(value) {
|
|
146
|
-
if (value.includes("'") || /[\u0000-\u001f\u007f]/.test(value))
|
|
147
|
-
return undefined;
|
|
148
|
-
return `'${value}'`;
|
|
149
|
-
}
|
|
150
|
-
export function tomlBasicString(value) {
|
|
151
|
-
return `"${value
|
|
152
|
-
.replace(/\\/g, "\\\\")
|
|
153
|
-
.replace(/"/g, '\\"')
|
|
154
|
-
.replace(/\r/g, "\\r")
|
|
155
|
-
.replace(/\n/g, "\\n")
|
|
156
|
-
.replace(/\t/g, "\\t")}"`;
|
|
157
|
-
}
|
|
158
|
-
function normalizeCodexProjectPath(value) {
|
|
159
|
-
return value.replace(/\//g, "\\").replace(/\\+$/g, "").toLowerCase();
|
|
160
|
-
}
|
|
161
|
-
function codexProjectIsTrusted(parsed, projectPath) {
|
|
162
|
-
if (!isRecord(parsed))
|
|
163
|
-
return false;
|
|
164
|
-
const projects = parsed.projects;
|
|
165
|
-
if (!isRecord(projects))
|
|
166
|
-
return false;
|
|
167
|
-
const project = projects[projectPath];
|
|
168
|
-
return isRecord(project) && project.trust_level === "trusted";
|
|
169
|
-
}
|
|
170
|
-
function splitLeadingJsonComments(content) {
|
|
171
|
-
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
172
|
-
const lines = content === "" ? [] : content.split(/\r?\n/);
|
|
173
|
-
let index = 0;
|
|
174
|
-
while (index < lines.length) {
|
|
175
|
-
const trimmed = lines[index].trim();
|
|
176
|
-
if (trimmed === "" || trimmed.startsWith("//")) {
|
|
177
|
-
index++;
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
const prefixLines = lines.slice(0, index);
|
|
183
|
-
return {
|
|
184
|
-
prefix: prefixLines.length === 0 ? "" : `${prefixLines.join(eol)}${eol}`,
|
|
185
|
-
body: lines.slice(index).join(eol),
|
|
186
|
-
eol,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
async function readTextIfExists(path) {
|
|
190
|
-
try {
|
|
191
|
-
return await readFile(path, "utf8");
|
|
192
|
-
}
|
|
193
|
-
catch (err) {
|
|
194
|
-
if (err.code === "ENOENT")
|
|
195
|
-
return undefined;
|
|
196
|
-
throw err;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
function parseJsonObject(content, path) {
|
|
200
|
-
const parsed = JSON.parse(content);
|
|
201
|
-
if (!isRecord(parsed)) {
|
|
202
|
-
throw new Error(`${path} must contain a JSON object`);
|
|
203
|
-
}
|
|
204
|
-
return parsed;
|
|
205
|
-
}
|
|
206
|
-
function trimTrailingSeparators(path) {
|
|
207
|
-
const root = parsePath(path).root;
|
|
208
|
-
let result = path;
|
|
209
|
-
while (result.length > root.length && /[\\/]/.test(result[result.length - 1])) {
|
|
210
|
-
result = result.slice(0, -1);
|
|
211
|
-
}
|
|
212
|
-
return result;
|
|
213
|
-
}
|
|
214
|
-
export function isRecord(value) {
|
|
215
|
-
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
216
|
-
}
|
|
217
16
|
function errorMessage(err) {
|
|
218
17
|
return err instanceof Error ? err.message : String(err);
|
|
219
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/providers/trust.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/providers/trust.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,yBAAyB,EACzB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAA0B,EAC1B,OAAe,EACf,IAAqC;IAErC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,wBAAwB,QAAQ,aAAa,OAAO,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { UserClarification } from "../agents/planners/types.js";
|
|
2
2
|
import type { OrchestrationOutput } from "../terminal/output.js";
|
|
3
3
|
import type { PtyHandle } from "../pty/types.js";
|
|
4
|
+
import type { ForkHandler } from "./fork.js";
|
|
4
5
|
/**
|
|
5
6
|
* Provider-specific plan mode configuration.
|
|
6
7
|
* The PlannerAdapter reads this to apply plan mode correctly per provider.
|
|
@@ -54,6 +55,37 @@ export interface CompletionDetectorOptions {
|
|
|
54
55
|
completionMarkerFile?: string;
|
|
55
56
|
onActivation?: () => void;
|
|
56
57
|
}
|
|
58
|
+
export interface OptionCatalog {
|
|
59
|
+
models(): readonly string[];
|
|
60
|
+
defaultModel(): string;
|
|
61
|
+
efforts(model?: string): readonly string[];
|
|
62
|
+
defaultEffort(): string;
|
|
63
|
+
isKnownModel(model: string): boolean;
|
|
64
|
+
isKnownEffort(effort: string, model?: string): boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface SubagentOptionCatalog {
|
|
67
|
+
models(): readonly string[];
|
|
68
|
+
defaultModel(): string;
|
|
69
|
+
isKnownModel(model: string): boolean;
|
|
70
|
+
}
|
|
71
|
+
export type ForkSubmitFloorPolicy = {
|
|
72
|
+
from: "source";
|
|
73
|
+
} | {
|
|
74
|
+
from: "fork-file";
|
|
75
|
+
offset: number;
|
|
76
|
+
};
|
|
77
|
+
export type SimplifierPromptMode = "initial" | "pushback" | "reviewer-revision" | "user-feedback";
|
|
78
|
+
export interface SimplifierPromptOptions {
|
|
79
|
+
mode: SimplifierPromptMode;
|
|
80
|
+
resume?: boolean;
|
|
81
|
+
outputPlanFile: string;
|
|
82
|
+
scopeLabel: string;
|
|
83
|
+
subagentModel?: string;
|
|
84
|
+
diffFile?: string;
|
|
85
|
+
guidance?: string;
|
|
86
|
+
feedbackFile?: string;
|
|
87
|
+
previousPlanFile?: string;
|
|
88
|
+
}
|
|
57
89
|
/**
|
|
58
90
|
* Post-spawn plan-mode entry mechanism for providers whose CLI has no
|
|
59
91
|
* equivalent flag or slash-command for entering plan mode.
|
|
@@ -206,6 +238,16 @@ export interface ProviderStrategy {
|
|
|
206
238
|
readonly childEnv?: Record<string, string>;
|
|
207
239
|
/** Session handler for file discovery and extraction. */
|
|
208
240
|
readonly session: SessionHandler;
|
|
241
|
+
/** Offscreen fork handler for provider-owned launch, lineage, and turn accounting. */
|
|
242
|
+
readonly fork: ForkHandler;
|
|
243
|
+
/** Provider-owned model/effort catalog. */
|
|
244
|
+
readonly options: OptionCatalog;
|
|
245
|
+
/** Provider-owned model catalog for simplifier subagents. */
|
|
246
|
+
readonly subagentOptions: SubagentOptionCatalog;
|
|
247
|
+
/** Provider-owned subagent type name used inside simplifier prompts. */
|
|
248
|
+
readonly simplifierSubagentType: string;
|
|
249
|
+
/** Submit floor policy for fork turn tracking. */
|
|
250
|
+
readonly forkSubmitFloor: ForkSubmitFloorPolicy;
|
|
209
251
|
/**
|
|
210
252
|
* Build CLI args from prompt text and options.
|
|
211
253
|
*
|
|
@@ -214,6 +256,10 @@ export interface ProviderStrategy {
|
|
|
214
256
|
* positional or `-i` argument.
|
|
215
257
|
*/
|
|
216
258
|
buildArgs(prompt: string, opts: BuildArgsOpts): Promise<string[]>;
|
|
259
|
+
/** Ensure the provider trusts this workdir, if the provider has a trust store. */
|
|
260
|
+
ensureTrust(workdir: string): Promise<void>;
|
|
261
|
+
/** Build the provider-owned simplifier prompt. */
|
|
262
|
+
simplifierPrompt(opts: SimplifierPromptOptions): string;
|
|
217
263
|
/** Create a new CompletionDetector for this provider. */
|
|
218
264
|
createDetector(opts?: CompletionDetectorOptions): CompletionDetector;
|
|
219
265
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAExD,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC;IAC5B,YAAY,IAAI,MAAM,CAAC;IACvB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAC3C,aAAa,IAAI,MAAM,CAAC;IACxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACxD;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC;IAC5B,YAAY,IAAI,MAAM,CAAC;IACvB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,UAAU,GACV,mBAAmB,GACnB,eAAe,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,CACH,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAChE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,mEAAmE;AACnE,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7E;AAED;;;;;;;;;GASG;AACH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,eAAe,CACb,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAChF,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,iEAAiE;IACjE,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhE;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEpF;;;;;;;;OAQG;IACH,qBAAqB,CAAC,CACpB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEhC;;;;;;OAMG;IACH,mBAAmB,CAAC,CAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAElC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,sFAAsF;IACtF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC,6DAA6D;IAC7D,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAEhD,wEAAwE;IACxE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAExC,kDAAkD;IAClD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAEhD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAElE,kFAAkF;IAClF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C,kDAAkD;IAClD,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAAC;IAExD,yDAAyD;IACzD,cAAc,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,kBAAkB,CAAC;IAErE;;;;;;;;OAQG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CAChD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,oDAAoD;IACpD,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAyJA,mEAAmE;AACnE,MAAM,UAAU,MAAM,CAAC,SAA8B,EAAE,IAAY;IACjE,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FlowParamValues, FlowTemplate } from "./flow/types.js";
|
|
2
|
+
import { type SimplifyScope } from "./git-info.js";
|
|
3
|
+
export type SimplifyScopeGateResult = {
|
|
4
|
+
diff: string;
|
|
5
|
+
} | {
|
|
6
|
+
fallback: true;
|
|
7
|
+
};
|
|
8
|
+
export declare function resolveSimplifyScopeGate(cwd: string, scope: SimplifyScope): Promise<SimplifyScopeGateResult>;
|
|
9
|
+
export declare function ensureSimplifyPreconditions(template: FlowTemplate, values: FlowParamValues, cwd: string): Promise<SimplifyScopeGateResult | undefined>;
|
|
10
|
+
//# sourceMappingURL=simplify-scope-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify-scope-gate.d.ts","sourceRoot":"","sources":["../src/simplify-scope-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAWL,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC;AAEvB,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,uBAAuB,CAAC,CAgClC;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAW9C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { branchDiff, detectDefaultBranch, diffHead, hasCommit, hasParentCommit, isGitInstalled, isRepo, isSimplifyScope, isWorkingTreeClean, lastCommitDiff, } from "./git-info.js";
|
|
2
|
+
export async function resolveSimplifyScopeGate(cwd, scope) {
|
|
3
|
+
if (scope === "codebase")
|
|
4
|
+
return { fallback: true };
|
|
5
|
+
if (!await isGitInstalled(cwd)) {
|
|
6
|
+
throw new Error("git is not installed or not on PATH.");
|
|
7
|
+
}
|
|
8
|
+
if (!await isRepo(cwd)) {
|
|
9
|
+
throw new Error("the selected scope requires a git repository.");
|
|
10
|
+
}
|
|
11
|
+
if (scope === "lastcommit") {
|
|
12
|
+
return resolveLastCommitScope(cwd);
|
|
13
|
+
}
|
|
14
|
+
let defaultBranch;
|
|
15
|
+
if (scope === "branch") {
|
|
16
|
+
defaultBranch = await detectDefaultBranch(cwd);
|
|
17
|
+
if (!defaultBranch) {
|
|
18
|
+
throw new Error("could not determine the default branch (tried origin/HEAD, main, and master).");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const diff = scope === "uncommitted"
|
|
22
|
+
? await diffHead(cwd)
|
|
23
|
+
: await branchDiff(cwd, defaultBranch);
|
|
24
|
+
if (!diff?.trim()) {
|
|
25
|
+
const label = scope === "branch" ? "current branch" : "uncommitted changes";
|
|
26
|
+
throw new Error(`${label} scope has no diff. Choose another scope or make changes first.`);
|
|
27
|
+
}
|
|
28
|
+
return { diff };
|
|
29
|
+
}
|
|
30
|
+
export async function ensureSimplifyPreconditions(template, values, cwd) {
|
|
31
|
+
if (template.name !== "simplify")
|
|
32
|
+
return undefined;
|
|
33
|
+
const scope = values.scope;
|
|
34
|
+
if (!isSimplifyScope(scope) || scope === "codebase")
|
|
35
|
+
return undefined;
|
|
36
|
+
try {
|
|
37
|
+
return await resolveSimplifyScopeGate(cwd, scope);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
41
|
+
throw new Error(`Cannot start simplify: ${message}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function resolveLastCommitScope(cwd) {
|
|
45
|
+
if (!await isWorkingTreeClean(cwd)) {
|
|
46
|
+
throw new Error("Last commit scope requires a clean working tree. Commit, stash, or discard changes first.");
|
|
47
|
+
}
|
|
48
|
+
if (!await hasCommit(cwd)) {
|
|
49
|
+
throw new Error("Last commit scope requires at least one commit. Make an initial commit or choose another scope.");
|
|
50
|
+
}
|
|
51
|
+
if (!await hasParentCommit(cwd)) {
|
|
52
|
+
return { fallback: true };
|
|
53
|
+
}
|
|
54
|
+
const diff = await lastCommitDiff(cwd);
|
|
55
|
+
if (!diff.trim()) {
|
|
56
|
+
throw new Error("Last commit scope has no diff. Choose another scope or make changes first.");
|
|
57
|
+
}
|
|
58
|
+
return { diff };
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=simplify-scope-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify-scope-gate.js","sourceRoot":"","sources":["../src/simplify-scope-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/startup-tui.d.ts
CHANGED
|
@@ -19,6 +19,11 @@ export interface TaskEditor {
|
|
|
19
19
|
cursorCol: number;
|
|
20
20
|
scrollOffset: number;
|
|
21
21
|
}
|
|
22
|
+
interface WorkflowSnapshot {
|
|
23
|
+
memorableValues: Record<string, FlowParamValue | undefined>;
|
|
24
|
+
yolo: boolean;
|
|
25
|
+
driverMemory: DriverMemory;
|
|
26
|
+
}
|
|
22
27
|
export interface TuiState {
|
|
23
28
|
zone: FocusZone;
|
|
24
29
|
fields: ConfigField[];
|
|
@@ -31,8 +36,11 @@ export interface TuiState {
|
|
|
31
36
|
flowSectionHeight: number;
|
|
32
37
|
templateIndex: number;
|
|
33
38
|
taskRequired: boolean;
|
|
39
|
+
taskOptional: boolean;
|
|
40
|
+
taskAutoHide: boolean;
|
|
34
41
|
updateBanner: UpdateInfo | null;
|
|
35
|
-
|
|
42
|
+
configContext?: StartupTuiContext;
|
|
43
|
+
workflowSnapshots: Map<string, WorkflowSnapshot>;
|
|
36
44
|
driverMemory: DriverMemory;
|
|
37
45
|
attachments: AttachmentManager;
|
|
38
46
|
transientHint: string | null;
|
|
@@ -44,6 +52,7 @@ export interface StartupTuiContext {
|
|
|
44
52
|
fileConfig?: ConfigFile;
|
|
45
53
|
userConfig?: ConfigFile;
|
|
46
54
|
}
|
|
55
|
+
export declare function taskVisible(state: TuiState): boolean;
|
|
47
56
|
export declare function buildInitialState(defaults: Partial<CliOptions>, rows: number, cols: number, gitInfo?: GitInfo | null, ctx?: StartupTuiContext, updateInfo?: UpdateInfo | null): TuiState;
|
|
48
57
|
/** Compute available editor height. */
|
|
49
58
|
export declare function editorHeight(state: TuiState, rowCount?: number): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-tui.d.ts","sourceRoot":"","sources":["../src/startup-tui.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"startup-tui.d.ts","sourceRoot":"","sources":["../src/startup-tui.ts"],"names":[],"mappings":"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"}
|