@12ui/design 0.2.66 → 0.2.67
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/README.md +42 -35
- package/SKILL.md +1 -1
- package/dist/branch-client.d.ts +4 -2
- package/dist/branch-client.d.ts.map +1 -1
- package/dist/branch-client.js +36 -21
- package/dist/branch-client.js.map +1 -1
- package/dist/branch-conversion-engine.d.ts +8 -0
- package/dist/branch-conversion-engine.d.ts.map +1 -0
- package/dist/branch-conversion-engine.js +43 -0
- package/dist/branch-conversion-engine.js.map +1 -0
- package/dist/branch-execution.d.ts +12 -0
- package/dist/branch-execution.d.ts.map +1 -1
- package/dist/branch-execution.js +62 -39
- package/dist/branch-execution.js.map +1 -1
- package/dist/branch-local-conversion.d.ts +27 -0
- package/dist/branch-local-conversion.d.ts.map +1 -0
- package/dist/branch-local-conversion.js +80 -0
- package/dist/branch-local-conversion.js.map +1 -0
- package/dist/branch-local-publication.d.ts +15 -0
- package/dist/branch-local-publication.d.ts.map +1 -0
- package/dist/branch-local-publication.js +111 -0
- package/dist/branch-local-publication.js.map +1 -0
- package/dist/branch-page-conversion.d.ts +7 -0
- package/dist/branch-page-conversion.d.ts.map +1 -1
- package/dist/branch-page-conversion.js +13 -0
- package/dist/branch-page-conversion.js.map +1 -1
- package/dist/branch-progress.d.ts +2 -0
- package/dist/branch-progress.d.ts.map +1 -1
- package/dist/branch-progress.js.map +1 -1
- package/dist/branch-run-record.d.ts +24 -2
- package/dist/branch-run-record.d.ts.map +1 -1
- package/dist/branch-run-record.js +3 -2
- package/dist/branch-run-record.js.map +1 -1
- package/dist/branch-status.d.ts.map +1 -1
- package/dist/branch-status.js +21 -3
- package/dist/branch-status.js.map +1 -1
- package/dist/branch-winner.d.ts.map +1 -1
- package/dist/branch-winner.js +1 -2
- package/dist/branch-winner.js.map +1 -1
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +1 -0
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-branch-command.d.ts.map +1 -1
- package/dist/cli-branch-command.js +7 -2
- package/dist/cli-branch-command.js.map +1 -1
- package/dist/cli-capabilities.d.ts +29 -15
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +30 -23
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-codex-readiness.d.ts +11 -0
- package/dist/cli-codex-readiness.d.ts.map +1 -0
- package/dist/cli-codex-readiness.js +72 -0
- package/dist/cli-codex-readiness.js.map +1 -0
- package/dist/cli-conversion-engine.d.ts +11 -0
- package/dist/cli-conversion-engine.d.ts.map +1 -0
- package/dist/cli-conversion-engine.js +26 -0
- package/dist/cli-conversion-engine.js.map +1 -0
- package/dist/cli-conversion-receipt.d.ts +28 -0
- package/dist/cli-conversion-receipt.d.ts.map +1 -0
- package/dist/cli-conversion-receipt.js +130 -0
- package/dist/cli-conversion-receipt.js.map +1 -0
- package/dist/cli-convert-command.d.ts.map +1 -1
- package/dist/cli-convert-command.js +12 -5
- package/dist/cli-convert-command.js.map +1 -1
- package/dist/cli-corpus-command.d.ts.map +1 -1
- package/dist/cli-corpus-command.js +4 -5
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-corpus-evidence.d.ts +0 -1
- package/dist/cli-corpus-evidence.d.ts.map +1 -1
- package/dist/cli-corpus-evidence.js +9 -50
- package/dist/cli-corpus-evidence.js.map +1 -1
- package/dist/cli-corpus-manifest.d.ts +18 -0
- package/dist/cli-corpus-manifest.d.ts.map +1 -0
- package/dist/cli-corpus-manifest.js +83 -0
- package/dist/cli-corpus-manifest.js.map +1 -0
- package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
- package/dist/cli-corpus-reference-downloads.js +5 -3
- package/dist/cli-corpus-reference-downloads.js.map +1 -1
- package/dist/cli-corpus-run.d.ts.map +1 -1
- package/dist/cli-corpus-run.js +19 -8
- package/dist/cli-corpus-run.js.map +1 -1
- package/dist/cli-corpus-types.d.ts +6 -6
- package/dist/cli-corpus-types.d.ts.map +1 -1
- package/dist/cli-engine.d.ts +10 -0
- package/dist/cli-engine.d.ts.map +1 -0
- package/dist/cli-engine.js +28 -0
- package/dist/cli-engine.js.map +1 -0
- package/dist/cli-help/conversion.d.ts +10 -3
- package/dist/cli-help/conversion.d.ts.map +1 -1
- package/dist/cli-help/conversion.js +14 -6
- package/dist/cli-help/conversion.js.map +1 -1
- package/dist/cli-help/design.d.ts +6 -6
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +8 -7
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +18 -11
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/setup.d.ts +2 -2
- package/dist/cli-help/setup.js +3 -3
- package/dist/cli-help/setup.js.map +1 -1
- package/dist/cli-image-backend.d.ts +3 -0
- package/dist/cli-image-backend.d.ts.map +1 -0
- package/dist/cli-image-backend.js +12 -0
- package/dist/cli-image-backend.js.map +1 -0
- package/dist/cli-local-conversion.d.ts +17 -0
- package/dist/cli-local-conversion.d.ts.map +1 -0
- package/dist/cli-local-conversion.js +74 -0
- package/dist/cli-local-conversion.js.map +1 -0
- package/dist/cli-local-dispatch.d.ts +4 -0
- package/dist/cli-local-dispatch.d.ts.map +1 -0
- package/dist/cli-local-dispatch.js +102 -0
- package/dist/cli-local-dispatch.js.map +1 -0
- package/dist/cli-local-export.d.ts +7 -0
- package/dist/cli-local-export.d.ts.map +1 -0
- package/dist/cli-local-export.js +31 -0
- package/dist/cli-local-export.js.map +1 -0
- package/dist/cli-local-improve-context.d.ts +3 -0
- package/dist/cli-local-improve-context.d.ts.map +1 -0
- package/dist/cli-local-improve-context.js +47 -0
- package/dist/cli-local-improve-context.js.map +1 -0
- package/dist/cli-local-improve.d.ts +16 -0
- package/dist/cli-local-improve.d.ts.map +1 -0
- package/dist/cli-local-improve.js +214 -0
- package/dist/cli-local-improve.js.map +1 -0
- package/dist/cli-local-record.d.ts +8 -0
- package/dist/cli-local-record.d.ts.map +1 -0
- package/dist/cli-local-record.js +67 -0
- package/dist/cli-local-record.js.map +1 -0
- package/dist/cli-local-runtime.d.ts +7 -0
- package/dist/cli-local-runtime.d.ts.map +1 -0
- package/dist/cli-local-runtime.js +21 -0
- package/dist/cli-local-runtime.js.map +1 -0
- package/dist/cli-next-command.d.ts +1 -0
- package/dist/cli-next-command.d.ts.map +1 -1
- package/dist/cli-next-command.js +12 -9
- package/dist/cli-next-command.js.map +1 -1
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +3 -0
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-skill-command.d.ts +0 -3
- package/dist/cli-skill-command.d.ts.map +1 -1
- package/dist/cli-skill-command.js +9 -24
- package/dist/cli-skill-command.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +20 -11
- package/dist/cli-usage.js.map +1 -1
- package/dist/concept-input.d.ts +1 -1
- package/dist/concept-input.d.ts.map +1 -1
- package/dist/concept-input.js +1 -1
- package/dist/concept-input.js.map +1 -1
- package/dist/conversion-status-contract.d.ts +13 -1
- package/dist/conversion-status-contract.d.ts.map +1 -1
- package/dist/conversion-status-contract.js +12 -11
- package/dist/conversion-status-contract.js.map +1 -1
- package/dist/corpus-client.d.ts +7 -6
- package/dist/corpus-client.d.ts.map +1 -1
- package/dist/corpus-client.js +14 -1
- package/dist/corpus-client.js.map +1 -1
- package/dist/corpus-inspiration-failure.js +1 -1
- package/dist/corpus-inspiration-failure.js.map +1 -1
- package/dist/corpus-request-error.d.ts +3 -10
- package/dist/corpus-request-error.d.ts.map +1 -1
- package/dist/corpus-request-error.js +1 -24
- package/dist/corpus-request-error.js.map +1 -1
- package/dist/http-response-diagnostic.d.ts +12 -0
- package/dist/http-response-diagnostic.d.ts.map +1 -0
- package/dist/http-response-diagnostic.js +58 -0
- package/dist/http-response-diagnostic.js.map +1 -0
- package/dist/improve-branch-stage.d.ts.map +1 -1
- package/dist/improve-branch-stage.js +6 -25
- package/dist/improve-branch-stage.js.map +1 -1
- package/dist/improve-concept.d.ts +1 -1
- package/dist/improve-concept.d.ts.map +1 -1
- package/dist/improve-concept.js +1 -1
- package/dist/improve-concept.js.map +1 -1
- package/dist/improve-core/concept-input.d.ts +2 -43
- package/dist/improve-core/concept-input.d.ts.map +1 -1
- package/dist/improve-core/concept-input.js +3 -53
- package/dist/improve-core/concept-input.js.map +1 -1
- package/dist/improve-core/improve-concept.d.ts +0 -6
- package/dist/improve-core/improve-concept.d.ts.map +1 -1
- package/dist/improve-core/improve-concept.js +4 -36
- package/dist/improve-core/improve-concept.js.map +1 -1
- package/dist/improve-core/improve-page-words.d.ts +2 -2
- package/dist/improve-core/improve-page-words.d.ts.map +1 -1
- package/dist/improve-core/improve-page-words.js +8 -6
- package/dist/improve-core/improve-page-words.js.map +1 -1
- package/dist/improve-generation-stages.d.ts.map +1 -1
- package/dist/improve-generation-stages.js +6 -24
- package/dist/improve-generation-stages.js.map +1 -1
- package/dist/improve-kit-readme.d.ts.map +1 -1
- package/dist/improve-kit-readme.js +1 -0
- package/dist/improve-kit-readme.js.map +1 -1
- package/dist/improve-source-words.d.ts +14 -0
- package/dist/improve-source-words.d.ts.map +1 -0
- package/dist/improve-source-words.js +66 -0
- package/dist/improve-source-words.js.map +1 -0
- package/dist/improve-workspace.d.ts +3 -0
- package/dist/improve-workspace.d.ts.map +1 -1
- package/dist/improve-workspace.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +36 -5
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/package-client.d.ts +3 -1
- package/dist/package-client.d.ts.map +1 -1
- package/dist/package-client.js +34 -11
- package/dist/package-client.js.map +1 -1
- package/dist/prototype-gates.d.ts.map +1 -1
- package/dist/prototype-gates.js +1 -1
- package/dist/prototype-gates.js.map +1 -1
- package/dist/prototype-poststep.js +1 -1
- package/dist/prototype-poststep.js.map +1 -1
- package/dist/prototype-requests.d.ts +1 -0
- package/dist/prototype-requests.d.ts.map +1 -1
- package/dist/prototype-requests.js.map +1 -1
- package/dist/prototype-revision.d.ts +1 -1
- package/dist/prototype-revision.js +1 -1
- package/dist/prototype-runner.d.ts.map +1 -1
- package/dist/prototype-runner.js +9 -3
- package/dist/prototype-runner.js.map +1 -1
- package/dist/review-page.js +2 -2
- package/dist/review-page.js.map +1 -1
- package/dist/review-prototype-gap.js +1 -1
- package/dist/review-prototype-gap.js.map +1 -1
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +1 -0
- package/dist/run-journal-commands.js.map +1 -1
- package/dist/skill-installer.d.ts +2 -1
- package/dist/skill-installer.d.ts.map +1 -1
- package/dist/skill-installer.js +3 -3
- package/dist/skill-installer.js.map +1 -1
- package/open-design.json +2 -2
- package/package.json +5 -4
- package/prototype-kit/analyze.mjs +4 -1
- package/prototype-kit/build.mjs +29 -4
- package/prototype-kit/inventory.mjs +11 -2
- package/prototype-kit/lib/local-page.mjs +50 -0
- package/prototype-kit/lib/static-server.mjs +1 -0
- package/skills/12ui-design/SKILL.md +34 -32
- package/skills/12ui-design/improve.md +48 -155
- package/skills/12ui-design/outputs.md +22 -0
package/dist/cli-help/setup.js
CHANGED
|
@@ -97,7 +97,7 @@ export const SETUP_HELP = {
|
|
|
97
97
|
{
|
|
98
98
|
heading: 'Actions',
|
|
99
99
|
items: [
|
|
100
|
-
'install — install the skill and ensure the CLI
|
|
100
|
+
'install — install the shared skill and ensure the CLI is ready.',
|
|
101
101
|
'status — inspect skill, enablement, and credential-file state.',
|
|
102
102
|
'print — write the bundled SKILL.md to stdout.',
|
|
103
103
|
'remove — remove the skill while retaining the CLI and credentials.',
|
|
@@ -117,8 +117,8 @@ export const SETUP_HELP = {
|
|
|
117
117
|
sections: [{
|
|
118
118
|
heading: 'What it does',
|
|
119
119
|
items: [
|
|
120
|
-
'Installs the skill transactionally, pins the CLI, enables Codex installations
|
|
121
|
-
'--
|
|
120
|
+
'Installs the shared skill transactionally, pins the CLI, and enables Codex installations. Authentication is unchanged by default.',
|
|
121
|
+
'Explicit --api-key, --key-name, or --login-origin requests authentication setup; these conflict with --skip-auth. --force replaces a conflicting unrecognized or locally modified skill.',
|
|
122
122
|
],
|
|
123
123
|
}],
|
|
124
124
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli-help/setup.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE;QACJ,OAAO,EAAE,4DAA4D;QACrE,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE;oBACL,uEAAuE;oBACvE,8FAA8F;oBAC9F,gFAAgF;oBAChF,0DAA0D;iBAC3D;aACF,CAAC;KACH;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,kDAAkD;QAC3D,QAAQ,EAAE;YACR;gBACE,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE;oBACL,oGAAoG;oBACpG,oFAAoF;iBACrF;aACF;YACD;gBACE,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE;oBACL,sGAAsG;oBACtG,sDAAsD;iBACvD;aACF;SACF;KACF;IACD,cAAc,EAAE;QACd,OAAO,EAAE,yDAAyD;QAClE,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE;oBACL,6HAA6H;oBAC7H,mDAAmD;iBACpD;aACF,CAAC;KACH;IACD,aAAa,EAAE;QACb,OAAO,EAAE,mEAAmE;QAC5E,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE;oBACL,wGAAwG;oBACxG,iHAAiH;iBAClH;aACF,CAAC;KACH;IACD,aAAa,EAAE;QACb,OAAO,EAAE,gDAAgD;QACzD,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE;oBACL,0EAA0E;oBAC1E,qGAAqG;iBACtG;aACF,CAAC;KACH;IACD,GAAG,EAAE;QACH,OAAO,EAAE,0CAA0C;QACnD,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE;oBACL,oEAAoE;oBACpE,yEAAyE;oBACzE,sEAAsE;iBACvE;aACF,CAAC;KACH;IACD,aAAa,EAAE;QACb,OAAO,EAAE,uFAAuF;QAChG,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,iBAAiB;gBAC1B,KAAK,EAAE;oBACL,kHAAkH;oBAClH,+EAA+E;iBAChF;aACF,CAAC;KACH;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE,CAAC;gBACT,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE;oBACL,mEAAmE;oBACnE,iHAAiH;iBAClH;aACF,CAAC;KACH;IACD,KAAK,EAAE;QACL,OAAO,EAAE,8DAA8D;QACvE,QAAQ,EAAE;YACR;gBACE,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE;oBACL,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli-help/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-image-backend.d.ts","sourceRoot":"","sources":["../src/cli-image-backend.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,yBAAyB,CACvC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,UAAU,GAAG,QAAQ,CASvB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Resolve the image backend once, before a new conversion can spend planner usage. */
|
|
2
|
+
export function selectInitialImageBackend(requested, environment = process.env) {
|
|
3
|
+
if (requested !== undefined && requested !== 'external' && requested !== 'native') {
|
|
4
|
+
throw new Error('--image-backend must be external or native');
|
|
5
|
+
}
|
|
6
|
+
const hasExternalKey = Boolean(environment.OPENAI_API_KEY?.trim());
|
|
7
|
+
if (requested === 'external' && !hasExternalKey) {
|
|
8
|
+
throw new Error('External image execution requires OPENAI_API_KEY. Set that key or select --image-backend native before starting this conversion. No planner call was started.');
|
|
9
|
+
}
|
|
10
|
+
return requested ?? (hasExternalKey ? 'external' : 'native');
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cli-image-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-image-backend.js","sourceRoot":"","sources":["../src/cli-image-backend.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,yBAAyB,CACvC,SAAkB,EAClB,cAAiC,OAAO,CAAC,GAAG;IAE5C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,IAAI,SAAS,KAAK,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,+JAA+J,CAAC,CAAC;IACnL,CAAC;IACD,OAAO,SAAS,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type CliFlags } from './cli-arguments.js';
|
|
2
|
+
import type { EngineSelection } from './cli-engine.js';
|
|
3
|
+
import { launchLocalRuntime } from './cli-local-runtime.js';
|
|
4
|
+
import { type LocalConversionReceipt } from './cli-conversion-receipt.js';
|
|
5
|
+
type Input = {
|
|
6
|
+
source: string;
|
|
7
|
+
runDir: string;
|
|
8
|
+
flags: CliFlags;
|
|
9
|
+
selection: EngineSelection;
|
|
10
|
+
};
|
|
11
|
+
type Dependencies = {
|
|
12
|
+
launch?: typeof launchLocalRuntime;
|
|
13
|
+
};
|
|
14
|
+
export declare function runLocalConversion(input: Input, dependencies?: Dependencies): Promise<LocalConversionReceipt>;
|
|
15
|
+
export declare function resumeLocalConversion(runDir: string, flags: CliFlags, selection: EngineSelection, dependencies?: Dependencies): Promise<LocalConversionReceipt | undefined>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=cli-local-conversion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-conversion.d.ts","sourceRoot":"","sources":["../src/cli-local-conversion.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAA4E,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAIpJ,KAAK,KAAK,GAAC;IAAC,MAAM,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,QAAQ,CAAC;IAAA,SAAS,EAAC,eAAe,CAAA;CAAC,CAAC;AAClF,KAAK,YAAY,GAAC;IAAC,MAAM,CAAC,EAAC,OAAO,kBAAkB,CAAA;CAAC,CAAC;AAuBtD,wBAAsB,kBAAkB,CAAC,KAAK,EAAC,KAAK,EAAC,YAAY,GAAC,YAAe,GAAE,OAAO,CAAC,sBAAsB,CAAC,CAKjH;AACD,wBAAsB,qBAAqB,CAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,EAAC,YAAY,GAAC,YAAe,GAAE,OAAO,CAAC,sBAAsB,GAAC,SAAS,CAAC,CAazK"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { stringFlag } from './cli-arguments.js';
|
|
6
|
+
import { launchLocalRuntime } from './cli-local-runtime.js';
|
|
7
|
+
import { prepareConversionReceipt, readConversionReceipt, updateConversionReceipt } from './cli-conversion-receipt.js';
|
|
8
|
+
import { readLocalJson } from './cli-local-record.js';
|
|
9
|
+
import { selectInitialImageBackend } from './cli-image-backend.js';
|
|
10
|
+
const hash = async (file) => createHash('sha256').update(await readFile(file)).digest('hex');
|
|
11
|
+
function settings(flags, selection) {
|
|
12
|
+
return { 'auth-home': path.resolve(selection.codexHome ?? process.env.CODEX_HOME ?? path.join(homedir(), '.codex')), 'codex-bin': selection.codexBin ?? 'codex', 'image-backend': selectInitialImageBackend(stringFlag(flags, 'image-backend')), 'clean-assets': stringFlag(flags, 'clean-assets') ?? 'enhance', reasoning: stringFlag(flags, 'reasoning') ?? 'low', 'timeout-ms': stringFlag(flags, 'timeout-ms') ?? '1800000' };
|
|
13
|
+
}
|
|
14
|
+
async function execute(receipt, mode, selection, dependencies) {
|
|
15
|
+
const args = [mode, '--run-dir', receipt.runDir];
|
|
16
|
+
if (mode === 'convert')
|
|
17
|
+
args.push('--source', receipt.source.path);
|
|
18
|
+
for (const [key, value] of Object.entries(receipt.settings))
|
|
19
|
+
if (mode === 'convert' || ['auth-home', 'codex-bin'].includes(key))
|
|
20
|
+
args.push('--' + key, value);
|
|
21
|
+
try {
|
|
22
|
+
await (dependencies.launch ?? launchLocalRuntime)('convert', args, { ...selection, output: 'ignore' });
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
try {
|
|
26
|
+
await updateConversionReceipt(receipt.runDir, 'failed');
|
|
27
|
+
}
|
|
28
|
+
catch { /* The original runtime failure remains primary. */ }
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const updated = await updateConversionReceipt(receipt.runDir);
|
|
33
|
+
if (!updated?.entrypoint || updated.status !== 'complete')
|
|
34
|
+
throw Error('Local runtime returned without a complete verified output manifest. Inspect the saved run.');
|
|
35
|
+
return updated;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// A receipt write is not grounds to discard a successfully published artifact.
|
|
39
|
+
const result = await readLocalJson(path.join(receipt.runDir, 'result.json'));
|
|
40
|
+
if (result?.status === 'complete')
|
|
41
|
+
console.error(`Local output is complete; receipt refresh failed: ${error.message}`);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function runLocalConversion(input, dependencies = {}) {
|
|
46
|
+
if (input.selection.engine !== 'codex')
|
|
47
|
+
throw Error('Local conversion requires the Codex engine');
|
|
48
|
+
if (await stat(input.runDir).catch(() => null))
|
|
49
|
+
throw Error('Local run directory already exists; resume it or choose a new directory');
|
|
50
|
+
const receipt = await prepareConversionReceipt({ source: path.resolve(input.source), runDir: path.resolve(input.runDir), settings: settings(input.flags, input.selection) });
|
|
51
|
+
return execute(receipt, 'convert', input.selection, dependencies);
|
|
52
|
+
}
|
|
53
|
+
export async function resumeLocalConversion(runDir, flags, selection, dependencies = {}) {
|
|
54
|
+
const receipt = await readConversionReceipt(runDir);
|
|
55
|
+
if (!receipt) {
|
|
56
|
+
await (dependencies.launch ?? launchLocalRuntime)('convert', ['resume', '--run-dir', path.resolve(runDir), '--auth-home', path.resolve(selection.codexHome ?? process.env.CODEX_HOME ?? path.join(homedir(), '.codex')), '--codex-bin', selection.codexBin ?? 'codex'], selection);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
for (const [flag, key] of [['codex-home', 'auth-home'], ['codex-bin', 'codex-bin']]) {
|
|
60
|
+
const explicit = stringFlag(flags, flag);
|
|
61
|
+
if (explicit && (flag === 'codex-home' ? path.resolve(explicit) : explicit) !== receipt.settings[key])
|
|
62
|
+
throw Error(`Saved local run uses a different --${flag}; retain its original setting.`);
|
|
63
|
+
}
|
|
64
|
+
const initialized = await readLocalJson(path.join(receipt.runDir, 'run.json'));
|
|
65
|
+
if (!initialized) {
|
|
66
|
+
if (await stat(receipt.runDir).catch(() => null))
|
|
67
|
+
throw Error('Local initialization is incomplete; inspect the existing run directory before retrying. No work was dispatched.');
|
|
68
|
+
if (await hash(receipt.source.path) !== receipt.source.sha256)
|
|
69
|
+
throw Error('Source changed since local dispatch preparation; use a new run directory.');
|
|
70
|
+
selectInitialImageBackend(receipt.settings['image-backend']);
|
|
71
|
+
}
|
|
72
|
+
return execute(receipt, initialized ? 'resume' : 'convert', selection, dependencies);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=cli-local-conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-conversion.js","sourceRoot":"","sources":["../src/cli-local-conversion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CliFlags } from './cli-arguments.js';
|
|
2
|
+
/** Resolve routing before API authentication or journal directory creation. Runtime owns local durable records. */
|
|
3
|
+
export declare function dispatchLocalCommand(command: string[], flags: CliFlags): Promise<boolean>;
|
|
4
|
+
//# sourceMappingURL=cli-local-dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-dispatch.d.ts","sourceRoot":"","sources":["../src/cli-local-dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAY5E,mHAAmH;AACnH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CA6D/F"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { branchAttemptPath, readBranchAttempt } from './branch-run-record.js';
|
|
3
|
+
import { booleanFlag, stringFlag } from './cli-arguments.js';
|
|
4
|
+
import { selectEngine } from './cli-engine.js';
|
|
5
|
+
import { launchLocalRuntime } from './cli-local-runtime.js';
|
|
6
|
+
import { readLocalRecord, readLocalJson, printLocalStatus } from './cli-local-record.js';
|
|
7
|
+
import { localImproveSupported, runLocalImproveCommand, resumeLocalImproveCommand } from './cli-local-improve.js';
|
|
8
|
+
import { chooseConversionEngine, assertApiConversionFlags, localConversionDirectory } from './cli-conversion-engine.js';
|
|
9
|
+
import { runLocalConversion, resumeLocalConversion } from './cli-local-conversion.js';
|
|
10
|
+
import { isLocalOutput, runLocalExport } from './cli-local-export.js';
|
|
11
|
+
import { CliRefusal } from './cli-refusal.js';
|
|
12
|
+
const noJournal = { note: () => { }, heartbeat: () => { } };
|
|
13
|
+
function refuse(message) { throw new CliRefusal(message, 'local_arguments'); }
|
|
14
|
+
/** Resolve routing before API authentication or journal directory creation. Runtime owns local durable records. */
|
|
15
|
+
export async function dispatchLocalCommand(command, flags) {
|
|
16
|
+
const name = command[0];
|
|
17
|
+
if (name === 'branch')
|
|
18
|
+
return false; // Branch owns its conversion engine while generation remains hosted.
|
|
19
|
+
if (!['convert', 'export', 'resume', 'next', 'improve'].includes(name)) {
|
|
20
|
+
if (stringFlag(flags, 'engine'))
|
|
21
|
+
await selectEngine(flags, false);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (name === 'next' && command[1]) {
|
|
25
|
+
const attempt = await readBranchAttempt(branchAttemptPath(command[1]));
|
|
26
|
+
if (attempt) {
|
|
27
|
+
await selectEngine(flags, false, attempt.convert?.selection?.engine ?? 'api');
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const inputRecord = name === 'convert' && command.length === 2 ? await readLocalRecord(command[1]) : null;
|
|
32
|
+
const derivation = name === 'convert' && (inputRecord || await isLocalOutput(command[1]));
|
|
33
|
+
if (derivation) {
|
|
34
|
+
// Local artifacts never acquire native semantics by selecting another engine.
|
|
35
|
+
if (!['assets', 'png', 'jpg', 'webp', 'pdf', 'react'].includes(stringFlag(flags, 'output') ?? ''))
|
|
36
|
+
refuse('Native LayerDoc, SVG, PSD, PPTX and Sketch require a new API conversion of the original source image; this local run supports assets, PNG, JPG, WebP, browser PDF and React exports.');
|
|
37
|
+
const selection = await selectEngine(flags, true, 'codex');
|
|
38
|
+
await runLocalExport(command, flags, inputRecord, selection);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const convertDirectory = name === 'convert' && command.length === 2 && command[1] !== 'package' ? localConversionDirectory(command[1], flags) : undefined;
|
|
42
|
+
const record = ['next', 'resume', 'export'].includes(name) ? await readLocalRecord(command[1]) : convertDirectory ? await readLocalRecord(convertDirectory) : name === 'improve' && stringFlag(flags, 'out-dir') ? await readLocalRecord(stringFlag(flags, 'out-dir')) : null;
|
|
43
|
+
const hostedImprove = name === 'improve' && !record && stringFlag(flags, 'out-dir') ? await readLocalJson(path.join(path.resolve(stringFlag(flags, 'out-dir')), 'improve.json')) : null;
|
|
44
|
+
const supported = name === 'export' || (name === 'improve' && booleanFlag(flags, 'apply') && localImproveSupported(flags));
|
|
45
|
+
// Saved records override machine readiness. Exported output is deterministic and needs no Codex account.
|
|
46
|
+
const saved = record ? 'codex' : hostedImprove ? 'api' : name === 'export' ? 'codex' : ['next', 'resume'].includes(name) ? 'api' : undefined;
|
|
47
|
+
const selection = convertDirectory ? await chooseConversionEngine({ source: command[1], flags, runDir: convertDirectory }) : await selectEngine(flags, Boolean(supported), saved);
|
|
48
|
+
if (selection.engine === 'api') {
|
|
49
|
+
assertApiConversionFlags(flags);
|
|
50
|
+
if (name === 'improve' && booleanFlag(flags, 'apply'))
|
|
51
|
+
refuse('Actual project edits require a ready Codex engine. Configure Codex, then use --engine codex --apply; the API produces an improvement kit.');
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (name === 'convert' && record)
|
|
55
|
+
refuse(`This directory already contains a local run. Use 12ui resume ${record.directory} or choose a new --out-dir.`);
|
|
56
|
+
if (name === 'next') {
|
|
57
|
+
if (!record || command.length !== 2)
|
|
58
|
+
refuse('next requires one saved local run directory');
|
|
59
|
+
const allowed = new Set(['engine', 'wait', 'json', 'timeout-ms', 'quiet']);
|
|
60
|
+
if (Object.keys(flags).some(key => !allowed.has(key)))
|
|
61
|
+
refuse('Unsupported local next option. Use --wait, --json, or --timeout-ms.');
|
|
62
|
+
const timeout = stringFlag(flags, 'timeout-ms');
|
|
63
|
+
if (timeout && (!Number.isSafeInteger(Number(timeout)) || Number(timeout) < 1))
|
|
64
|
+
refuse('--timeout-ms must be a positive integer');
|
|
65
|
+
await printLocalStatus(record, booleanFlag(flags, 'wait'), timeout ? Number(timeout) : undefined);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (name === 'improve') {
|
|
69
|
+
if (record?.kind === 'improve-flow' && !booleanFlag(flags, 'apply'))
|
|
70
|
+
await resumeLocalImproveCommand(record.directory, noJournal, selection);
|
|
71
|
+
else
|
|
72
|
+
await runLocalImproveCommand(command, flags, noJournal, selection);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (name === 'resume' && record?.kind === 'improve-flow') {
|
|
76
|
+
await resumeLocalImproveCommand(record.directory, noJournal, selection);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (name === 'resume') {
|
|
80
|
+
if (!record || command.length !== 2)
|
|
81
|
+
refuse('resume requires one saved local run directory');
|
|
82
|
+
const allowed = new Set(['engine', 'codex-home', 'codex-bin', 'json', 'quiet']);
|
|
83
|
+
if (Object.keys(flags).some(key => !allowed.has(key)))
|
|
84
|
+
refuse('Local resume uses frozen run settings; only --engine, --codex-home and --codex-bin may be supplied.');
|
|
85
|
+
if (record.kind === 'convert') {
|
|
86
|
+
const receipt = await resumeLocalConversion(record.directory, flags, selection);
|
|
87
|
+
if (receipt)
|
|
88
|
+
console.log(JSON.stringify(receipt));
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
await launchLocalRuntime('improve', ['resume', '--run-dir', record.directory], selection);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
if (name === 'export') {
|
|
95
|
+
await runLocalExport(command, flags, record, selection);
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
const receipt = await runLocalConversion({ source: path.resolve(command[1]), runDir: convertDirectory, flags, selection });
|
|
99
|
+
console.log(JSON.stringify(receipt));
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=cli-local-dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-dispatch.js","sourceRoot":"","sources":["../src/cli-local-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CliFlags } from './cli-arguments.js';
|
|
2
|
+
import type { EngineSelection } from './cli-engine.js';
|
|
3
|
+
import { type LocalRecord } from './cli-local-record.js';
|
|
4
|
+
export declare const LOCAL_EXPORT_FORMATS: Set<string>;
|
|
5
|
+
export declare function isLocalOutput(directory?: string): Promise<boolean>;
|
|
6
|
+
export declare function runLocalExport(command: string[], flags: CliFlags, record: LocalRecord | null, selection: EngineSelection): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=cli-local-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-export.d.ts","sourceRoot":"","sources":["../src/cli-local-export.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAExE,eAAO,MAAM,oBAAoB,aAAqD,CAAC;AACvF,wBAAsB,aAAa,CAAC,SAAS,CAAC,EAAC,MAAM,GAAE,OAAO,CAAC,OAAO,CAAC,CAItE;AACD,wBAAsB,cAAc,CAAC,OAAO,EAAC,MAAM,EAAE,EAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,EAAC,WAAW,GAAC,IAAI,EAAC,SAAS,EAAC,eAAe,GAAE,OAAO,CAAC,IAAI,CAAC,CAUpI"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { stringFlag } from './cli-arguments.js';
|
|
3
|
+
import { launchLocalRuntime } from './cli-local-runtime.js';
|
|
4
|
+
import { readLocalJson } from './cli-local-record.js';
|
|
5
|
+
import { CliRefusal } from './cli-refusal.js';
|
|
6
|
+
export const LOCAL_EXPORT_FORMATS = new Set(['assets', 'png', 'jpg', 'webp', 'pdf', 'react']);
|
|
7
|
+
export async function isLocalOutput(directory) {
|
|
8
|
+
if (!directory)
|
|
9
|
+
return false;
|
|
10
|
+
const manifest = await readLocalJson(path.join(path.resolve(directory), 'manifest.json'));
|
|
11
|
+
return manifest?.schemaVersion === 1 && manifest.nativeLayerDoc === false && Array.isArray(manifest.files) && typeof manifest.entrypoint === 'string';
|
|
12
|
+
}
|
|
13
|
+
export async function runLocalExport(command, flags, record, selection) {
|
|
14
|
+
const target = stringFlag(flags, 'output'), destination = stringFlag(flags, 'out-dir');
|
|
15
|
+
if (command.length !== 2 || !target || !LOCAL_EXPORT_FORMATS.has(target) || !destination)
|
|
16
|
+
throw new CliRefusal('Local output requires --output assets|png|jpg|webp|pdf|react --out-dir NEW_DIR. Native LayerDoc, SVG, PSD, PPTX and Sketch require a new API conversion of the original source image.', 'local_export_arguments');
|
|
17
|
+
if (record && record.kind !== 'convert')
|
|
18
|
+
throw new CliRefusal('Export requires a local conversion run or its output directory.', 'local_export_source');
|
|
19
|
+
const allowed = new Set(['engine', 'output', 'out-dir', 'width', 'height', 'json', 'quiet']);
|
|
20
|
+
if (Object.keys(flags).some(key => !allowed.has(key)))
|
|
21
|
+
throw new CliRefusal('Unsupported local export option. See 12ui convert --help.', 'local_export_arguments');
|
|
22
|
+
const source = record ? path.join(record.directory, 'output') : path.resolve(command[1]);
|
|
23
|
+
const args = ['--source', source, '--destination', path.resolve(destination), '--target', target];
|
|
24
|
+
for (const key of ['width', 'height']) {
|
|
25
|
+
const value = stringFlag(flags, key);
|
|
26
|
+
if (value)
|
|
27
|
+
args.push('--' + key, value);
|
|
28
|
+
}
|
|
29
|
+
await launchLocalRuntime('export', args, selection);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=cli-local-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-export.js","sourceRoot":"","sources":["../src/cli-local-export.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAoB,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAC;AACvF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB;IACpD,IAAG,CAAC,SAAS;QAAC,OAAO,KAAK,CAAC;IAC3B,MAAM,QAAQ,GAAC,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAC,eAAe,CAAC,CAAC,CAAC;IACvF,OAAO,QAAQ,EAAE,aAAa,KAAG,CAAC,IAAI,QAAQ,CAAC,cAAc,KAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAG,QAAQ,CAAC;AACjJ,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAC,KAAc,EAAC,MAAuB,EAAC,SAAyB;IACrH,MAAM,MAAM,GAAC,UAAU,CAAC,KAAK,EAAC,QAAQ,CAAC,EAAC,WAAW,GAAC,UAAU,CAAC,KAAK,EAAC,SAAS,CAAC,CAAC;IAChF,IAAG,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,CAAC,MAAM,IAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAE,CAAC,WAAW;QAAC,MAAM,IAAI,UAAU,CAAC,uLAAuL,EAAC,wBAAwB,CAAC,CAAC;IACvT,IAAG,MAAM,IAAI,MAAM,CAAC,IAAI,KAAG,SAAS;QAAC,MAAM,IAAI,UAAU,CAAC,iEAAiE,EAAC,qBAAqB,CAAC,CAAC;IACnJ,MAAM,OAAO,GAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAC,OAAO,EAAC,QAAQ,EAAC,MAAM,EAAC,OAAO,CAAC,CAAC,CAAC;IACrF,IAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE,CAAA,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,MAAM,IAAI,UAAU,CAAC,2DAA2D,EAAC,wBAAwB,CAAC,CAAC;IAC9J,MAAM,MAAM,GAAC,MAAM,CAAA,CAAC,CAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,GAAC,CAAC,UAAU,EAAC,MAAM,EAAC,eAAe,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,UAAU,EAAC,MAAM,CAAC,CAAC;IAC3F,KAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAC,QAAQ,CAAC,EAAC,CAAC;QAAA,MAAM,KAAK,GAAC,UAAU,CAAC,KAAK,EAAC,GAAG,CAAC,CAAC;QAAA,IAAG,KAAK;YAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAC,GAAG,EAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IAC3G,MAAM,kBAAkB,CAAC,QAAQ,EAAC,IAAI,EAAC,SAAS,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-improve-context.d.ts","sourceRoot":"","sources":["../src/cli-local-improve-context.ts"],"names":[],"mappings":"AAGA,+FAA+F;AAC/F,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgClH"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { lstat, readFile, readdir } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/** Read only named project instruction documents; never follow symlinks or inspect secrets. */
|
|
4
|
+
export async function projectImproveBrief(repo, direction, instructions) {
|
|
5
|
+
const sections = [
|
|
6
|
+
'Apply the selected design to this real project. Preserve real data, behavior, routes and integrations. Inspect the project scripts and source before choosing build and behavior checks. Do not read credentials or secret files. Do not reset data or shared services. Report unavailable browser/build context honestly. The parent must independently inspect the real browser after this run.',
|
|
7
|
+
direction ? `User direction:\n${direction}` : 'User direction: realize the selected target design in the existing application.',
|
|
8
|
+
];
|
|
9
|
+
const ancestors = [];
|
|
10
|
+
for (let current = repo;; current = path.dirname(current)) {
|
|
11
|
+
ancestors.unshift(current);
|
|
12
|
+
if (path.dirname(current) === current)
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
async function readRule(file) {
|
|
16
|
+
const info = await lstat(file).catch(error => { if (error.code === 'ENOENT')
|
|
17
|
+
return undefined; throw error; });
|
|
18
|
+
if (info?.isFile())
|
|
19
|
+
sections.push(`Project rules (${file}):\n${await readFile(file, 'utf8')}`);
|
|
20
|
+
}
|
|
21
|
+
for (const dir of ancestors)
|
|
22
|
+
for (const name of ['AGENTS.md', 'CLAUDE.md'])
|
|
23
|
+
await readRule(path.join(dir, name));
|
|
24
|
+
const skip = new Set(['node_modules', 'dist', 'build', 'coverage', 'vendor', 'secrets', 'private', 'credentials', 'logs', 'data']);
|
|
25
|
+
async function descendants(dir) {
|
|
26
|
+
for (const entry of await readdir(dir, { withFileTypes: true })) {
|
|
27
|
+
if (entry.name.startsWith('.') || skip.has(entry.name) || entry.isSymbolicLink())
|
|
28
|
+
continue;
|
|
29
|
+
const file = path.join(dir, entry.name);
|
|
30
|
+
if (entry.isDirectory())
|
|
31
|
+
await descendants(file);
|
|
32
|
+
else if (dir !== repo && ['AGENTS.md', 'CLAUDE.md'].includes(entry.name))
|
|
33
|
+
await readRule(file);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
await descendants(repo);
|
|
37
|
+
if (instructions) {
|
|
38
|
+
const file = path.resolve(instructions);
|
|
39
|
+
if (!/\.(md|txt)$/iu.test(file) || /(^|[/.])(?:secrets?|credentials?|auth|\.env)([/.]|$)/iu.test(file))
|
|
40
|
+
throw new Error('--instructions must name a non-secret Markdown or text project brief');
|
|
41
|
+
if (!(await lstat(file)).isFile())
|
|
42
|
+
throw new Error('--instructions must be a regular file, not a symlink');
|
|
43
|
+
sections.push(`Additional caller context:\n${await readFile(file, 'utf8')}`);
|
|
44
|
+
}
|
|
45
|
+
return sections.join('\n\n');
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=cli-local-improve-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-improve-context.js","sourceRoot":"","sources":["../src/cli-local-improve-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,SAAkB,EAAE,YAAqB;IAC/F,MAAM,QAAQ,GAAG;QACf,mYAAmY;QACnY,SAAS,CAAC,CAAC,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC,iFAAiF;KAChI,CAAC;IACF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,IAAI,OAAO,GAAG,IAAI,GAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO;YAAE,MAAM;IAC/C,CAAC;IACD,KAAK,UAAU,QAAQ,CAAC,IAAY;QAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,IAAI,IAAI,EAAE,MAAM,EAAE;YAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;YAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACjH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnI,KAAK,UAAU,WAAW,CAAC,GAAW;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,SAAS;YAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;iBAC5C,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IACD,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,wDAAwD,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAChM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC3G,QAAQ,CAAC,IAAI,CAAC,+BAA+B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type CliFlags } from './cli-arguments.js';
|
|
2
|
+
import type { EngineSelection } from './cli-engine.js';
|
|
3
|
+
import { launchLocalRuntime } from './cli-local-runtime.js';
|
|
4
|
+
import { runImproveCommand } from './cli-improve-command.js';
|
|
5
|
+
import type { RunJournalNotes } from './run-journal.js';
|
|
6
|
+
export declare const LOCAL_IMPROVE_RECEIPT = "local-improve.json";
|
|
7
|
+
export declare const localImproveSupported: (flags: CliFlags) => boolean;
|
|
8
|
+
type Dependencies = {
|
|
9
|
+
runSource?: typeof runImproveCommand;
|
|
10
|
+
launch?: typeof launchLocalRuntime;
|
|
11
|
+
};
|
|
12
|
+
export declare function resumeLocalImproveCommand(runDir: string, journal: RunJournalNotes, selection: EngineSelection, dependencies?: Dependencies): Promise<void>;
|
|
13
|
+
/** The CLI also owns capture/draft before the runtime's dispatch lock. */
|
|
14
|
+
export declare function runLocalImproveCommand(command: readonly string[], flags: CliFlags, journal: RunJournalNotes, selection: EngineSelection, dependencies?: Dependencies): Promise<void>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=cli-local-improve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-local-improve.d.ts","sourceRoot":"","sources":["../src/cli-local-improve.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAC1D,eAAO,MAAM,qBAAqB,GAAI,OAAO,QAAQ,KAAG,OAC4C,CAAC;AAUrG,KAAK,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,kBAAkB,CAAA;CAAE,CAAC;AAkBjG,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpK;AAiGD,0EAA0E;AAC1E,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9L"}
|