@automaton-labs/aib 0.0.2 → 0.0.4
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/bin/cli.js +2 -2
- package/dist/commands/config-command.js +1 -3
- package/dist/commands/config-output.js +8 -0
- package/dist/commands/init-workspace.js +1 -3
- package/dist/commands/inspect-tree.js +3 -3
- package/dist/commands/reveal-command.js +5 -0
- package/dist/commands/sync-command.js +2 -2
- package/dist/config/local-config.js +3 -3
- package/dist/config/resolve-command-alias.js +1 -1
- package/dist/config/tsconfig-discovery.js +1 -0
- package/dist/config/workspace-root.js +3 -3
- package/dist/config/workspace-state.js +1 -1
- package/dist/dsl/aib-dsl.js +1 -1
- package/dist/help/bootstrap.md +21 -11
- package/dist/help/docs/first-setup.md +277 -0
- package/dist/help/docs/inspect.tree.md +8 -6
- package/dist/help/docs/patterns.md +12 -3
- package/dist/help/dsl/bootstrap.md +21 -11
- package/dist/help/dsl/docs/first-setup.md +277 -0
- package/dist/help/dsl/docs/inspect.tree.md +8 -6
- package/dist/help/dsl/docs/patterns.md +12 -3
- package/dist/help/dsl/full.md +21 -11
- package/dist/help/dsl/topics/first-setup.md +275 -0
- package/dist/help/dsl/topics/inspect.tree.md +8 -6
- package/dist/help/dsl/topics/patterns.md +12 -3
- package/dist/help/full.md +21 -11
- package/dist/help/help-meta.json +11 -7
- package/dist/help/index.md +6 -0
- package/dist/help/json/bootstrap.md +21 -11
- package/dist/help/json/docs/first-setup.md +277 -0
- package/dist/help/json/docs/inspect.tree.md +8 -6
- package/dist/help/json/docs/patterns.md +12 -3
- package/dist/help/json/full.md +21 -11
- package/dist/help/json/topics/first-setup.md +275 -0
- package/dist/help/json/topics/inspect.tree.md +8 -6
- package/dist/help/json/topics/patterns.md +12 -3
- package/dist/help/topics/first-setup.md +275 -0
- package/dist/help/topics/inspect.tree.md +8 -6
- package/dist/help/topics/patterns.md +12 -3
- package/dist/runtime/run-command.js +1 -1
- package/extension/vscode-refactor-bridge-extension.vsix +0 -0
- package/package.json +1 -1
- package/runtimes/launcher/win-x64/aib.exe +0 -0
- package/scripts/install-windows-launcher.cjs +1 -0
- package/scripts/postinstall.cjs +5 -4
- package/scripts/provision-runtime.cjs +160 -24
package/dist/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var O=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const F=O(require("node:fs")),Z=O(require("node:path")),W=require("../payloads/read-stdin-json"),ee=require("../commands/doctor"),te=require("../commands/init-workspace"),j=require("../commands/inspect"),re=require("../commands/imports-command"),ne=require("../commands/config-command"),se=require("../commands/diagnostics-command"),ie=require("../commands/execution-command"),oe=require("../commands/feedback-command"),ae=require("../commands/observability-command"),ce=require("../commands/generate-docs-command"),ue=require("../commands/help-command"),de=require("../commands/runtime-command"),le=require("../commands/result-view"),fe=require("../commands/quick-read"),q=require("../commands/captured-input"),G=require("../commands/session-workspace"),U=require("../commands/session-workspace"),$=require("../config/path-aliases"),g=require("../session/client"),pe=require("../session/server"),me=require("../commands/module-plan-cache"),H=require("../config/resolve-command-alias"),_e=require("../config/auto-start-ide"),o=require("../config/env-vars"),B=require("../client/transport-options"),v=require("../shared/errors"),C=require("../shared/metrics"),J=require("../shared/presentation"),K=require("../tracing/config"),z=require("../tracing/trace"),Q=require("../runtime/input-source");function Ce(e){return e.ok===!1}let L=null,V=Date.now();function Ie(e){const t=[];let i=process.cwd(),r,E,N=process.env[o.CLI_ENV.metrics]==="1",p=(0,B.parseExtensionTransport)(process.env[o.CLI_ENV.transport])??void 0,m,y,I;for(let l=0;l<e.length;l+=1){const f=e[l];if(f){if(f==="--cwd"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE","Expected a value after --cwd.");i=c,l+=1;continue}if(f==="--instance"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE","Expected a value after --instance.");r=c,l+=1;continue}if(f==="--session"||f==="-s"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE",`Expected a value after ${f}.`);E=c,l+=1;continue}if(f==="--metrics"){N=!0;continue}if(f==="--dsl"||f==="--force-dsl"){I="dsl";continue}if(f==="--stdin-format"){const c=e[l+1];if(c!=="auto"&&c!=="dsl")throw new v.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");I=c,l+=1;continue}if(f==="--trace-dir"){const c=e[l+1];if(!c)throw new v.CliError("MISSING_FLAG_VALUE","Expected a value after --trace-dir.");y=c,l+=1;continue}if(f==="--auto-start-ide"){m="serve-web";continue}if(f==="--no-auto-start-ide"){m="off";continue}if(f==="--transport"){const c=e[l+1],u=(0,B.parseExtensionTransport)(c);if(!u)throw new v.CliError("INVALID_TRANSPORT","Expected --transport to be either http or websocket.");p=u,l+=1;continue}t.push(f)}}const h=process.env[o.CLI_ENV.traceDir];return{commandArgs:t,cwd:i,instanceId:r,sessionId:E,metricsEnabled:N,transport:p,autoStartIde:(0,_e.resolveAutoStartIdePolicy)(m),trace:(0,K.resolveTraceConfig)(i,{...y!==void 0?{flagTraceDir:y}:{},...h!==void 0?{envTraceDir:h}:{}}),...I!==void 0?{stdinFormat:I}:{}}}async function Ee(){V=Date.now();const e=(0,C.metricsNow)(),t=[],{commandArgs:i,cwd:r,instanceId:E,sessionId:N,metricsEnabled:p,transport:m,autoStartIde:y,trace:I,stdinFormat:h}=Ie(process.argv.slice(2));await(0,U.runWithSessionOverride)(N,async()=>{const[l,...f]=i,c=(0,W.stripStdinFormatFlags)(f),u=c.restArgs,X=(0,C.metricsNow)(),s=await(0,H.resolveCanonicalCommandAlias)(l??"ping",r,E,y);if(p&&(0,C.recordSpan)(t,"cli.aliasResolution",X),(0,H.isRemovedAgentCommand)(s))throw new v.CliError("UNKNOWN_COMMAND",`Unknown command: ${s}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","config","qr","sync","inspect","imports","view","execution","move","rename","refactor","modulePlan","session","runtime","trace","observability","feedback","note"]});if(s==="session"&&(u[0]??"status")==="serve"){await(0,pe.runSessionServerCli)();return}if(s==="trace"){const n=(0,K.runTraceCommand)(r,u,I);d(n);return}if(s==="diagnostics"){await(0,se.runDiagnosticsCommand)(u);return}if(s==="observability"){x(r,s,u,I);const n=(0,ae.runObservabilityCommand)(r,u);d(n);return}if(s==="feedback"||s==="note"){x(r,s,u,I);const n=(0,oe.runFeedbackCommand)(r,u,s);d(n);return}if(s==="init"){const n=(0,te.runInitWorkspace)(r,u);d(n);return}if(s==="help"){const n=(0,ue.runHelpCommand)(u);d(n);return}if(s==="generate-docs"){const n=(0,ce.runGenerateDocsCommand)(r,u);d(n);return}if(s==="config"){x(r,s,u,I);const n=(0,ne.runConfigCommand)(r,u);d(n);return}if(s==="runtime"){const n=await(0,de.runRuntimeCommand)(r,u);n.ok===!1&&(process.exitCode=1),d(n);return}if(s==="qr"){x(r,s,u,I);const n=await(0,fe.runQuickReadCommand)(r,u);n.ok===!1&&(process.exitCode=1),d(n);return}const D=ye(s,u),P=D?(0,U.readEffectiveSessionPathAliases)(r):{},a=D?(0,$.expandPathAliasesInArgs)(r,u,P):u,A=await(0,Q.resolveCommandInputSource)({command:s,cwd:r,restArgs:a,readStdinInput:()=>(0,W.readStdinPayloadWithSource)({command:s,restArgs:a,...c.format!==void 0||h!==void 0?{format:c.format??h}:{}})}),_=D?(0,$.expandPathAliasesInJson)(r,A.payload,P):A.payload;if(L=(0,z.startTrace)({cwd:r,argv:process.argv.slice(2),command:s,restArgs:a,...I.absoluteTraceDir!==void 0?{traceDir:I.absoluteTraceDir}:I.traceDir!==void 0?{traceDir:I.traceDir}:{},..._!==void 0?{stdinPayload:_}:{},startedAtMs:V}),s==="session"){const n=a[0]??"status";if(n==="init"||n==="clear"||n==="where"||n==="read"||n==="write"||n==="prefs"||n==="aliases"||n==="list"||n==="use"){const S=(0,G.runSessionWorkspaceCommand)(r,a,_);d(S);return}if(n==="status"){const S=(0,G.runSessionWorkspaceCommand)(r,a,_),b=await(0,g.getSessionStatus)();d({...S,runtime:Ae(b)});return}if(n==="start"){const S=await(0,g.startSession)();d(S);return}if(n==="stop"){const S=await(0,g.stopSession)();d(S);return}throw new v.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${n}`)}if(s==="imports"&&a[0]==="normalize"){const n=(0,q.attachCapturedInput)(r,"imports",_,await(0,re.runImportsCommand)(r,a,_,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}},p?t:void 0),A.source);d(n);return}if(s==="execution"){const n=(0,ie.runExecutionCommand)(r,a);d(n);return}if(s==="view"){const n=(0,le.runResultViewCommand)(r,a,_);d(n);return}if(s==="doctor"){const n=await(0,ee.runDoctor)({cwd:r,runtime:a.includes("--runtime"),verbose:a.includes("--verbose"),json:a.includes("--json")});n.ok===!1&&(process.exitCode=1),d(n);return}if(s==="inspect"&&(a[0]==="graph"||a[0]==="tree"||a[0]==="cycles")){const n=(0,C.metricsNow)(),S=a[0]==="tree"?"tree":a[0]==="cycles"?"cycles":"graph",b=(0,q.attachCapturedInput)(r,S,_,await(0,j.runInspect)(r,a,_,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,C.recordSpan)(t,"cli.inspectGraph",n),(0,C.recordSpan)(t,"cli.total",e)),d(p?(0,C.appendMetrics)(b,t):b,m);return}if(s==="inspect"&&a.includes("--stdin")&&Ne(_)){const n=(0,C.metricsNow)(),S=(0,q.attachCapturedInput)(r,he(_),_,await(0,j.runInspect)(r,a,_,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,C.recordSpan)(t,"cli.inspectLocal",n),(0,C.recordSpan)(t,"cli.total",e)),d(p?(0,C.appendMetrics)(S,t):S,m);return}if((0,Q.commandRequiresPayload)(s,a,A))throw new v.CliError("STDIN_REQUIRED",`${s} currently expects a payload on stdin or --from.`);const w={command:s,restArgs:a,cwd:r},M=we(s,a);M&&(w.modulePlanExecutionId=M),N!==void 0&&(w.sessionId=N),E!==void 0&&(w.instanceId=E),_!==void 0&&(w.stdinPayload=_),A.source!==void 0&&(w.stdinInputSource=A.source),p&&(w.metricsEnabled=!0),m&&(w.transport=m),w.autoStartIde=y.mode;const k=Se();Object.keys(k).length>0&&(w.env=k);const Y=(0,C.metricsNow)(),T=await(0,g.callSession)(w,p?t:void 0);p&&((0,C.recordSpan)(t,"cli.callSession",Y),(0,C.recordSpan)(t,"cli.total",e));const R=p?(0,C.appendMetrics)(T,t):T;Ce(R)&&(process.exitCode=1),d(R,m)})}function Se(){const e=[o.CLI_ENV.managedHostScript,o.CLI_ENV.managedHostKind,o.CLI_ENV.managedHostRunDir,o.CLI_ENV.codeServerPath,o.CLI_ENV.extensionVsix,o.CLI_ENV.ideCommand,o.CLI_ENV.chromePath,o.CLI_ENV.managedHostWaitMs,o.CLI_ENV.workspaceRoot,o.CLI_ENV.disableWatchers,o.CLI_ENV.trace,o.CLI_ENV.traceDir,o.CLI_ENV.failureSnapshots,o.CLI_ENV.productStorageDir,o.CLI_ENV.metrics,o.CLI_ENV.metricsDir,o.CLI_ENV.metricsTag,o.CLI_ENV.mutationImpactMetrics,o.CLI_ENV.mutationImpactStream,o.CLI_ENV.testPostMutationCyclesDelayMs,o.CLI_ENV.testRefactorBatchDelayMs,o.CLI_ENV.testRenameDelayMs,o.CLI_ENV.modulePlanSyncWaitMs,o.CLI_ENV.refactorBatchSyncWaitMs,o.CLI_ENV.renameSyncWaitMs],t={};for(const i of e){const r=process.env[i];r!==void 0&&(t[i]=r)}return t}function we(e,t){if(e!=="modulePlan")return null;const i=t[0]??"";return i!=="execute"&&i!=="apply"?null:ve()??(0,me.buildModulePlanExecutionId)()}function ve(){const e=process.env.AIB_MODULE_PLAN_EXECUTION_ID;return e&&/^exec_[a-z0-9_-]+$/i.test(e)?e:null}function x(e,t,i,r){L=(0,z.startTrace)({cwd:e,argv:process.argv.slice(2),command:t,restArgs:i,...r.absoluteTraceDir!==void 0?{traceDir:r.absoluteTraceDir}:r.traceDir!==void 0?{traceDir:r.traceDir}:{},startedAtMs:V})}function ye(e,t){return e==="session"||e==="execution"||e==="observability"||e==="doctor"||e==="view"||e==="imports"&&t[0]==="normalize"||e==="inspect"&&(t[0]==="graph"||t[0]==="tree"||t[0]==="cycles"||t[0]==="imports"||t.includes("--stdin"))}function Ae(e){if(e.running===!0){const t=e.session&&typeof e.session=="object"&&!Array.isArray(e.session)?e.session:{},i=typeof t.pid=="number"?` pid ${t.pid}`:"",r=typeof t.port=="number"?` port ${t.port}`:"";return`running${i}${r}`.trim()}return e.processAlive===!0&&e.healthy===!1?"unhealthy":"stopped"}function Ne(e){return!e||typeof e!="object"||Array.isArray(e)?!1:e.op==="tree"||e.op==="cycles"||e.op==="imports"?!0:Array.isArray(e.requests)&&e.requests.some(t=>t&&typeof t=="object"&&!Array.isArray(t)&&(t.op==="tree"||t.op==="cycles"||t.op==="imports"))}function he(e){if(!e||typeof e!="object"||Array.isArray(e))return"inspect";const t=Array.isArray(e.requests)?e.requests.filter(i=>i&&typeof i=="object"&&!Array.isArray(i)):[e];return t.every(i=>i.op==="cycles")?"cycles":t.every(i=>i.op==="tree")?"tree":t.every(i=>i.op==="imports")?"imports":"inspect"}Ee().catch(e=>{const t=(0,v.errorPayload)(e);d(t),process.exitCode=1});function d(e,t){const i=(0,J.createCliPresentationEnvelope)(e);L?.enabled&&L.complete({output:i.tracePayload,exitCode:e.ok===!1?1:be(process.exitCode),durationMs:Date.now()-V,...t?{transport:t}:{}});const r=process.env.AIB_CANONICAL_JSON_PATH;r&&(F.default.mkdirSync(Z.default.dirname(r),{recursive:!0}),F.default.writeFileSync(r,`${JSON.stringify(i.tracePayload,null,2)}
|
|
3
|
-
`)),process.stdout.write((0,J.presentCliEnvelope)(i,process.env.AIB_FORCE_JSON==="1"?"json":"agent"))}function
|
|
2
|
+
"use strict";var O=exports&&exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const F=O(require("node:fs")),Z=O(require("node:path")),W=require("../payloads/read-stdin-json"),ee=require("../commands/doctor"),te=require("../commands/init-workspace"),j=require("../commands/inspect"),re=require("../commands/imports-command"),ne=require("../commands/config-command"),se=require("../commands/diagnostics-command"),ie=require("../commands/execution-command"),oe=require("../commands/feedback-command"),ae=require("../commands/observability-command"),ce=require("../commands/generate-docs-command"),ue=require("../commands/help-command"),de=require("../commands/runtime-command"),le=require("../commands/reveal-command"),fe=require("../commands/result-view"),pe=require("../commands/quick-read"),q=require("../commands/captured-input"),G=require("../commands/session-workspace"),U=require("../commands/session-workspace"),$=require("../config/path-aliases"),L=require("../session/client"),me=require("../session/server"),_e=require("../commands/module-plan-cache"),H=require("../config/resolve-command-alias"),Ce=require("../config/auto-start-ide"),o=require("../config/env-vars"),B=require("../client/transport-options"),w=require("../shared/errors"),I=require("../shared/metrics"),J=require("../shared/presentation"),K=require("../tracing/config"),z=require("../tracing/trace"),Q=require("../runtime/input-source");function Ie(e){return e.ok===!1}let V=null,x=Date.now();function Ee(e){const t=[];let i=process.cwd(),r,E,N=process.env[o.CLI_ENV.metrics]==="1",p=(0,B.parseExtensionTransport)(process.env[o.CLI_ENV.transport])??void 0,m,y,_;for(let l=0;l<e.length;l+=1){const f=e[l];if(f){if(f==="--cwd"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE","Expected a value after --cwd.");i=d,l+=1;continue}if(f==="--instance"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE","Expected a value after --instance.");r=d,l+=1;continue}if(f==="--session"||f==="-s"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE",`Expected a value after ${f}.`);E=d,l+=1;continue}if(f==="--metrics"){N=!0;continue}if(f==="--dsl"||f==="--force-dsl"){_="dsl";continue}if(f==="--stdin-format"){const d=e[l+1];if(d!=="auto"&&d!=="dsl")throw new w.CliError("INVALID_STDIN_FORMAT","Expected --stdin-format to be auto or dsl.");_=d,l+=1;continue}if(f==="--trace-dir"){const d=e[l+1];if(!d)throw new w.CliError("MISSING_FLAG_VALUE","Expected a value after --trace-dir.");y=d,l+=1;continue}if(f==="--auto-start-ide"){m="serve-web";continue}if(f==="--no-auto-start-ide"){m="off";continue}if(f==="--transport"){const d=e[l+1],c=(0,B.parseExtensionTransport)(d);if(!c)throw new w.CliError("INVALID_TRANSPORT","Expected --transport to be either http or websocket.");p=c,l+=1;continue}t.push(f)}}const h=process.env[o.CLI_ENV.traceDir];return{commandArgs:t,cwd:i,instanceId:r,sessionId:E,metricsEnabled:N,transport:p,autoStartIde:(0,Ce.resolveAutoStartIdePolicy)(m),trace:(0,K.resolveTraceConfig)(i,{...y!==void 0?{flagTraceDir:y}:{},...h!==void 0?{envTraceDir:h}:{}}),..._!==void 0?{stdinFormat:_}:{}}}async function Se(){x=Date.now();const e=(0,I.metricsNow)(),t=[],{commandArgs:i,cwd:r,instanceId:E,sessionId:N,metricsEnabled:p,transport:m,autoStartIde:y,trace:_,stdinFormat:h}=Ee(process.argv.slice(2));await(0,U.runWithSessionOverride)(N,async()=>{const[l,...f]=i,d=(0,W.stripStdinFormatFlags)(f),c=d.restArgs,X=(0,I.metricsNow)(),s=await(0,H.resolveCanonicalCommandAlias)(l??"ping",r,E,y);if(p&&(0,I.recordSpan)(t,"cli.aliasResolution",X),(0,H.isRemovedAgentCommand)(s))throw new w.CliError("UNKNOWN_COMMAND",`Unknown command: ${s}`,{availableCommands:["doctor","diagnostics","listInstances","ping","runtimeInfo","printConfig","init-skill-usage","init","help","generate-docs","config","qr","sync","reveal","inspect","imports","view","execution","move","rename","refactor","modulePlan","session","runtime","trace","observability","feedback","note"]});if(s==="session"&&(c[0]??"status")==="serve"){await(0,me.runSessionServerCli)();return}if(s==="trace"){const n=(0,K.runTraceCommand)(r,c,_);u(n);return}if(s==="diagnostics"){await(0,se.runDiagnosticsCommand)(c);return}if(s==="observability"){b(r,s,c,_);const n=(0,ae.runObservabilityCommand)(r,c);u(n);return}if(s==="feedback"||s==="note"){b(r,s,c,_);const n=(0,oe.runFeedbackCommand)(r,c,s);u(n);return}if(s==="init"){const n=(0,te.runInitWorkspace)(r,c);u(n);return}if(s==="help"){const n=(0,ue.runHelpCommand)(c);u(n);return}if(s==="generate-docs"){const n=(0,ce.runGenerateDocsCommand)(r,c);u(n);return}if(s==="config"){b(r,s,c,_);const n=(0,ne.runConfigCommand)(r,c);u(n);return}if(s==="runtime"){const n=await(0,de.runRuntimeCommand)(r,c);n.ok===!1&&(process.exitCode=1),u(n);return}if(s==="reveal"){b(r,s,c,_);const n=(0,le.runRevealCommand)(r,c);u(n);return}if(s==="qr"){b(r,s,c,_);const n=await(0,pe.runQuickReadCommand)(r,c);n.ok===!1&&(process.exitCode=1),u(n);return}const D=Ae(s,c),P=D?(0,U.readEffectiveSessionPathAliases)(r):{},a=D?(0,$.expandPathAliasesInArgs)(r,c,P):c,A=await(0,Q.resolveCommandInputSource)({command:s,cwd:r,restArgs:a,readStdinInput:()=>(0,W.readStdinPayloadWithSource)({command:s,restArgs:a,...d.format!==void 0||h!==void 0?{format:d.format??h}:{}})}),C=D?(0,$.expandPathAliasesInJson)(r,A.payload,P):A.payload;if(V=(0,z.startTrace)({cwd:r,argv:process.argv.slice(2),command:s,restArgs:a,..._.absoluteTraceDir!==void 0?{traceDir:_.absoluteTraceDir}:_.traceDir!==void 0?{traceDir:_.traceDir}:{},...C!==void 0?{stdinPayload:C}:{},startedAtMs:x}),s==="session"){const n=a[0]??"status";if(n==="init"||n==="clear"||n==="where"||n==="read"||n==="write"||n==="prefs"||n==="aliases"||n==="list"||n==="use"){const S=(0,G.runSessionWorkspaceCommand)(r,a,C);u(S);return}if(n==="status"){const S=(0,G.runSessionWorkspaceCommand)(r,a,C),g=await(0,L.getSessionStatus)();u({...S,runtime:Ne(g)});return}if(n==="start"){const S=await(0,L.startSession)();u(S);return}if(n==="stop"){const S=await(0,L.stopSession)();u(S);return}throw new w.CliError("UNKNOWN_SESSION_COMMAND",`Unknown aib session command: ${n}`)}if(s==="imports"&&a[0]==="normalize"){const n=(0,q.attachCapturedInput)(r,"imports",C,await(0,re.runImportsCommand)(r,a,C,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}},p?t:void 0),A.source);u(n);return}if(s==="execution"){const n=(0,ie.runExecutionCommand)(r,a);u(n);return}if(s==="view"){const n=(0,fe.runResultViewCommand)(r,a,C);u(n);return}if(s==="doctor"){const n=await(0,ee.runDoctor)({cwd:r,runtime:a.includes("--runtime"),verbose:a.includes("--verbose"),json:a.includes("--json")});n.ok===!1&&(process.exitCode=1),u(n);return}if(s==="inspect"&&(a[0]==="graph"||a[0]==="tree"||a[0]==="cycles")){const n=(0,I.metricsNow)(),S=a[0]==="tree"?"tree":a[0]==="cycles"?"cycles":"graph",g=(0,q.attachCapturedInput)(r,S,C,await(0,j.runInspect)(r,a,C,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,I.recordSpan)(t,"cli.inspectGraph",n),(0,I.recordSpan)(t,"cli.total",e)),u(p?(0,I.appendMetrics)(g,t):g,m);return}if(s==="inspect"&&a.includes("--stdin")&&he(C)){const n=(0,I.metricsNow)(),S=(0,q.attachCapturedInput)(r,be(C),C,await(0,j.runInspect)(r,a,C,{...E!==void 0?{explicitInstanceId:E}:{},autoStartIde:y,...m!==void 0?{transport:m}:{},...p?{metricsEnabled:!0}:{}}),A.source);p&&((0,I.recordSpan)(t,"cli.inspectLocal",n),(0,I.recordSpan)(t,"cli.total",e)),u(p?(0,I.appendMetrics)(S,t):S,m);return}if((0,Q.commandRequiresPayload)(s,a,A))throw new w.CliError("STDIN_REQUIRED",`${s} currently expects a payload on stdin or --from.`);const v={command:s,restArgs:a,cwd:r},M=we(s,a);M&&(v.modulePlanExecutionId=M),N!==void 0&&(v.sessionId=N),E!==void 0&&(v.instanceId=E),C!==void 0&&(v.stdinPayload=C),A.source!==void 0&&(v.stdinInputSource=A.source),p&&(v.metricsEnabled=!0),m&&(v.transport=m),v.autoStartIde=y.mode;const k=ve();Object.keys(k).length>0&&(v.env=k);const Y=(0,I.metricsNow)(),T=await(0,L.callSession)(v,p?t:void 0);p&&((0,I.recordSpan)(t,"cli.callSession",Y),(0,I.recordSpan)(t,"cli.total",e));const R=p?(0,I.appendMetrics)(T,t):T;Ie(R)&&(process.exitCode=1),u(R,m)})}function ve(){const e=[o.CLI_ENV.managedHostScript,o.CLI_ENV.managedHostKind,o.CLI_ENV.managedHostRunDir,o.CLI_ENV.codeServerPath,o.CLI_ENV.extensionVsix,o.CLI_ENV.ideCommand,o.CLI_ENV.chromePath,o.CLI_ENV.managedHostWaitMs,o.CLI_ENV.workspaceRoot,o.CLI_ENV.disableWatchers,o.CLI_ENV.trace,o.CLI_ENV.traceDir,o.CLI_ENV.failureSnapshots,o.CLI_ENV.productStorageDir,o.CLI_ENV.metrics,o.CLI_ENV.metricsDir,o.CLI_ENV.metricsTag,o.CLI_ENV.mutationImpactMetrics,o.CLI_ENV.mutationImpactStream,o.CLI_ENV.testPostMutationCyclesDelayMs,o.CLI_ENV.testRefactorBatchDelayMs,o.CLI_ENV.testRenameDelayMs,o.CLI_ENV.modulePlanSyncWaitMs,o.CLI_ENV.refactorBatchSyncWaitMs,o.CLI_ENV.renameSyncWaitMs],t={};for(const i of e){const r=process.env[i];r!==void 0&&(t[i]=r)}return t}function we(e,t){if(e!=="modulePlan")return null;const i=t[0]??"";return i!=="execute"&&i!=="apply"?null:ye()??(0,_e.buildModulePlanExecutionId)()}function ye(){const e=process.env.AIB_MODULE_PLAN_EXECUTION_ID;return e&&/^exec_[a-z0-9_-]+$/i.test(e)?e:null}function b(e,t,i,r){V=(0,z.startTrace)({cwd:e,argv:process.argv.slice(2),command:t,restArgs:i,...r.absoluteTraceDir!==void 0?{traceDir:r.absoluteTraceDir}:r.traceDir!==void 0?{traceDir:r.traceDir}:{},startedAtMs:x})}function Ae(e,t){return e==="session"||e==="execution"||e==="observability"||e==="doctor"||e==="reveal"||e==="view"||e==="imports"&&t[0]==="normalize"||e==="inspect"&&(t[0]==="graph"||t[0]==="tree"||t[0]==="cycles"||t[0]==="imports"||t.includes("--stdin"))}function Ne(e){if(e.running===!0){const t=e.session&&typeof e.session=="object"&&!Array.isArray(e.session)?e.session:{},i=typeof t.pid=="number"?` pid ${t.pid}`:"",r=typeof t.port=="number"?` port ${t.port}`:"";return`running${i}${r}`.trim()}return e.processAlive===!0&&e.healthy===!1?"unhealthy":"stopped"}function he(e){return!e||typeof e!="object"||Array.isArray(e)?!1:e.op==="tree"||e.op==="cycles"||e.op==="imports"?!0:Array.isArray(e.requests)&&e.requests.some(t=>t&&typeof t=="object"&&!Array.isArray(t)&&(t.op==="tree"||t.op==="cycles"||t.op==="imports"))}function be(e){if(!e||typeof e!="object"||Array.isArray(e))return"inspect";const t=Array.isArray(e.requests)?e.requests.filter(i=>i&&typeof i=="object"&&!Array.isArray(i)):[e];return t.every(i=>i.op==="cycles")?"cycles":t.every(i=>i.op==="tree")?"tree":t.every(i=>i.op==="imports")?"imports":"inspect"}Se().catch(e=>{const t=(0,w.errorPayload)(e);u(t),process.exitCode=1});function u(e,t){const i=(0,J.createCliPresentationEnvelope)(e);V?.enabled&&V.complete({output:i.tracePayload,exitCode:e.ok===!1?1:ge(process.exitCode),durationMs:Date.now()-x,...t?{transport:t}:{}});const r=process.env.AIB_CANONICAL_JSON_PATH;r&&(F.default.mkdirSync(Z.default.dirname(r),{recursive:!0}),F.default.writeFileSync(r,`${JSON.stringify(i.tracePayload,null,2)}
|
|
3
|
+
`)),process.stdout.write((0,J.presentCliEnvelope)(i,process.env.AIB_FORCE_JSON==="1"?"json":"agent"))}function ge(e){return typeof e=="number"?e:0}
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runConfigCommand=A;const p=require("../shared/agent-text"),
|
|
2
|
-
`)}function S(e){return{...e.scope?{scope:e.scope}:{},...e.mode?{to:e.mode}:{},...e.preferAlias?{preferAlias:e.preferAlias}:{},...e.exclude.length>0?{exclude:e.exclude}:{}}}function I(e){const n=[{name:"pathAliases",lines:P(e.aliases,e.configAliases,e.sessionAliases)},{name:"importRules",lines:N(e.importRules)},{name:"importNormalize",lines:w(e.importNormalize)},{name:"inspect.graph.exclude",lines:c(e.graphExclude)},{name:"inspect.tree.onlyDirs.include",lines:c(e.tree.onlyDirs.include)},{name:"inspect.tree.onlyDirs.exclude",lines:c(e.tree.onlyDirs.exclude)},{name:"inspect.tree.files.include",lines:c(e.tree.files.include)},{name:"inspect.tree.files.exclude",lines:c(e.tree.files.exclude)}],o=[`config: ${e.configPath}`,`root: ${e.root}`],s=[];for(const i of n){if(i.lines.length===0){s.push(i.name);continue}o.push("",`${i.name}:`,...i.lines)}return s.length>0&&o.push("","not set:",...s.map(i=>` ${i}`)),o.join(`
|
|
3
|
-
`)}function P(e,n,o){const s=Object.entries(e).sort(([i],[t])=>i.localeCompare(t));return s.length===0?[]:s.map(([i,t])=>{const r=Object.prototype.hasOwnProperty.call(o,i),l=Object.prototype.hasOwnProperty.call(n,i);return` @${i} -> ${t}${r&&l?" (session overrides config)":r?" (session)":""}`})}function N(e){return e.length===0?[]:e.map(n=>{const o=[n.specifier?`specifier=${n.specifier}`:null,n.ending?`ending=${n.ending}`:null,n.builtin?`builtin=${n.builtin}`:null,n.unusedImports?`unusedImports=${n.unusedImports}`:null].filter(s=>s!==null);return` ${n.scope}: ${o.length>0?o.join(" "):"defaults"}`})}function w(e){return e.length===0?[]:e.map(n=>{const o=[n.mode?`to=${n.mode}`:null,n.preferAlias?`preferAlias=${n.preferAlias}`:null,n.exclude.length>0?`exclude=${n.exclude.join(" ")}`:null].filter(s=>s!==null);return` ${n.scope??"*"}: ${o.length>0?o.join(" "):"defaults"}`})}function c(e){return e.map(n=>` ${n}`)}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runConfigCommand=A,exports.readConfigTextInput=c;const p=require("../shared/agent-text"),l=require("../shared/errors"),m=require("../config/import-rules"),d=require("../config/path-aliases"),h=require("../config/local-config"),u=require("../config/workspace-root"),C=require("./session-workspace"),x=require("./normalize-imports"),r=require("./config-output");function A(e,o=[]){const t=T(o,"--session-dir");if(t)return _(e,t);const n=y(o);if(!n)throw new l.CliError("CONFIG_USAGE","Usage: aib config [all|aliases|rules|session] [--session-dir .tmp/aib]");const s=c(e),i={ok:!0,root:s.root,configPath:s.configPath,view:n,pathAliases:s.aliases,configPathAliases:s.configAliases,sessionPathAliases:s.sessionAliases,importRules:(0,m.importRulesToJson)(s.importRules),importNormalize:s.importNormalize.map(D),graphExclude:[...s.graphExclude],tree:{onlyDirs:{exclude:[...s.tree.onlyDirs.exclude]},files:{exclude:[...s.tree.files.exclude]}},sync:{tsconfig:{exclude:[...s.sync.tsconfig.exclude]}},session:(0,r.configSessionPayload)(s)};return(0,p.attachAgentText)(i,M(s,n))}function _(e,o){const t=c(e),n=(0,u.updateWorkspaceConfig)(e,{sessionDir:o}),s=c(e),i=(0,u.workspaceConfigSummary)(n),a=t.sessionDir!==s.sessionDir,f={ok:!0,config:"aib.json",status:a?"updated":"unchanged",root:s.root,configPath:s.configPath,...i};return(0,p.attachAgentText)(f,(0,r.formatSessionDirMutationText)(s,a))}function y(e){if(e.length===0)return"default";if(e.length!==1)return null;const o=e[0];return o==="all"||o==="aliases"||o==="rules"||o==="session"?o:null}function T(e,o){if(!e.includes(o))return null;let t=null;for(let n=0;n<e.length;n+=1){if(e[n]!==o)throw new l.CliError("CONFIG_USAGE","Usage: aib config [--session-dir .tmp/aib]");if(t!==null)throw new l.CliError("CONFIG_USAGE",`${o} can be provided only once.`);const i=e[n+1];if(!i||i.startsWith("--"))throw new l.CliError("MISSING_FLAG_VALUE",`Expected a value after ${o}.`);t=i,n+=1}return t}function D(e){return{...e.scope?{scope:e.scope}:{},...e.mode?{to:e.mode}:{},...e.preferAlias?{preferAlias:e.preferAlias}:{},...e.exclude.length>0?{exclude:e.exclude}:{}}}function c(e){const o=(0,u.resolveRequiredWorkspaceRoot)(e),t=(0,u.workspaceConfigSummary)(o.config),n=(0,d.readConfigPathAliases)(e),s=(0,C.readSessionPathAliasOverrides)(e),i=(0,d.effectivePathAliases)(e,s),a=(0,m.readConfigImportRules)(e),f=(0,x.readWorkspaceNormalizeImportRules)(e),g=(0,h.resolveLocalCliConfig)(e);return{root:o.root,configPath:o.configPath,workspaceRoot:String(t["workspace.root"]??"."),sessionDir:typeof t.sessionDir=="string"?t.sessionDir:null,aliases:i,configAliases:n,sessionAliases:s,importRules:a,importNormalize:f.rules,graphExclude:g.config.inspect.graph.exclude,tree:g.config.inspect.tree,sync:g.config.sync,sessionAutoClean:t["session.autoClean"]!==!1,sessionTtlCleanMinutes:typeof t["session.ttlCleanMinutes"]=="number"?t["session.ttlCleanMinutes"]:60,sessionAutoDelete:t["session.autoDelete"]!==!1,sessionTtlDeleteMinutes:typeof t["session.ttlDeleteMinutes"]=="number"?t["session.ttlDeleteMinutes"]:60,runtimeAutoStopManagedIde:t["runtime.autoStopManagedIde"]!==!1,runtimeManagedIdeTtlMinutes:typeof t["runtime.managedIdeTtlMinutes"]=="number"?t["runtime.managedIdeTtlMinutes"]:15}}function M(e,o){switch(o){case"all":return(0,r.formatConfigAllText)(e);case"aliases":return(0,r.formatConfigAliasesText)(e);case"rules":return(0,r.formatConfigRulesText)(e);case"session":return(0,r.formatConfigSessionText)(e);case"default":return(0,r.formatConfigDefaultText)(e)}}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";var S=exports&&exports.__createBinding||(Object.create?(function(e,t,n,o){o===void 0&&(o=n);var s=Object.getOwnPropertyDescriptor(t,n);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,s)}):(function(e,t,n,o){o===void 0&&(o=n),e[o]=t[n]})),A=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),O=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var o=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[o.length]=s);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var o=e(t),s=0;s<o.length;s++)o[s]!=="default"&&S(n,t,o[s]);return A(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.CONFIG_SECTION_NAMES=void 0,exports.formatConfigDefaultText=_,exports.formatConfigAllText=T,exports.formatConfigAliasesText=M,exports.formatConfigRulesText=$,exports.formatConfigSessionText=D,exports.formatInitText=I,exports.formatSessionDirMutationText=N,exports.configSessionPayload=b;const i=O(require("node:path"));exports.CONFIG_SECTION_NAMES=["pathAliases","importRules","importNormalize","inspect.graph.exclude","inspect.tree.onlyDirs.exclude","inspect.tree.files.exclude","sync.tsconfig.exclude"];function _(e){return[...a(e),...c(e,exports.CONFIG_SECTION_NAMES)].join(`
|
|
2
|
+
`)}function T(e){return[...a(e),...l(e),...c(e,exports.CONFIG_SECTION_NAMES)].join(`
|
|
3
|
+
`)}function M(e){return[...v("pathAliases",h(e.aliases,e.configAliases,e.sessionAliases)),...g(exports.CONFIG_SECTION_NAMES.filter(t=>t!=="pathAliases"&&m(e,t).length===0))].join(`
|
|
4
|
+
`)}function $(e){const t=exports.CONFIG_SECTION_NAMES.filter(n=>n!=="pathAliases");return x(c(e,t)).join(`
|
|
5
|
+
`)}function D(e){return[...a(e),...l(e)].join(`
|
|
6
|
+
`)}function I(e,t){return[t==="created"?"aib workspace initialized":t==="unchanged"?"aib config unchanged":"aib config updated","",...a(e),...l(e),...c(e,exports.CONFIG_SECTION_NAMES)].join(`
|
|
7
|
+
`)}function N(e,t){return[t?"aib config updated":"aib config unchanged","",...a(e),...l(e),"","other config fields preserved"].join(`
|
|
8
|
+
`)}function b(e){return{"workspace.root":e.workspaceRoot,...e.sessionDir?{sessionDir:e.sessionDir}:{},"session.autoClean":e.sessionAutoClean,"session.ttlCleanMinutes":e.sessionTtlCleanMinutes,"session.autoDelete":e.sessionAutoDelete,"session.ttlDeleteMinutes":e.sessionTtlDeleteMinutes,"runtime.autoStopManagedIde":e.runtimeAutoStopManagedIde,"runtime.managedIdeTtlMinutes":e.runtimeManagedIdeTtlMinutes}}function a(e){return[`root: ${e.root}`,`workspace.root: ${e.workspaceRoot}`,`config: ${C(e.root,e.configPath)}`,`sessionDir: ${w(e)}`]}function l(e){const t=[];return e.sessionDir&&t.push("new sessions: <sessionDir>/<name>/**"),t.push(`session cleanup: ${u(e.sessionAutoClean,e.sessionTtlCleanMinutes)}`,`session deletion: ${u(e.sessionAutoDelete,e.sessionTtlDeleteMinutes)}`,`runtime cleanup: ${u(e.runtimeAutoStopManagedIde,e.runtimeManagedIdeTtlMinutes)}`),t.length>0?["",...t]:[]}function c(e,t){const n=[],o=[];for(const s of t){const r=m(e,s);if(r.length===0){o.push(s);continue}n.push("",`${s}:`,...r)}return n.push(...g(o)),n}function v(e,t){return t.length>0?[`${e}:`,...t]:[`${e}: not set`]}function g(e){return e.length>0?["","not set:",...e.map(t=>` ${t}`)]:[]}function x(e){return e[0]===""?e.slice(1):e}function m(e,t){switch(t){case"pathAliases":return h(e.aliases,e.configAliases,e.sessionAliases);case"importRules":return j(e.importRules);case"importNormalize":return y(e.importNormalize);case"inspect.graph.exclude":return f(e.graphExclude);case"inspect.tree.onlyDirs.exclude":return f(e.tree.onlyDirs.exclude);case"inspect.tree.files.exclude":return f(e.tree.files.exclude);case"sync.tsconfig.exclude":return f(e.sync.tsconfig.exclude)}}function h(e,t,n){const o=Object.entries(e).sort(([s],[r])=>s.localeCompare(r));return o.length===0?[]:o.map(([s,r])=>{const d=Object.prototype.hasOwnProperty.call(n,s),p=Object.prototype.hasOwnProperty.call(t,s);return` @${s} -> ${r}${d&&p?" (session overrides config)":d?" (session)":""}`})}function j(e){return e.length===0?[]:e.map(t=>{const n=[t.specifier?`specifier=${t.specifier}`:null,t.ending?`ending=${t.ending}`:null,t.builtin?`builtin=${t.builtin}`:null,t.unusedImports?`unusedImports=${t.unusedImports}`:null].filter(o=>o!==null);return` ${t.scope}: ${n.length>0?n.join(" "):"defaults"}`})}function y(e){return e.length===0?[]:e.map(t=>{const n=[t.mode?`to=${t.mode}`:null,t.preferAlias?`preferAlias=${t.preferAlias}`:null,t.exclude.length>0?`exclude=${t.exclude.join(" ")}`:null].filter(o=>o!==null);return` ${t.scope??"*"}: ${n.length>0?n.join(" "):"defaults"}`})}function f(e){return e.map(t=>` ${t}`)}function C(e,t){const n=i.resolve(e),o=i.resolve(t);if(E(n,o))return"<root>";const s=i.relative(n,o);return s&&!s.startsWith("..")&&!i.isAbsolute(s)?`<root>/${P(s)}`:o}function w(e){if(!e.sessionDir)return"not set";const t=i.isAbsolute(e.sessionDir)?e.sessionDir:i.resolve(e.root,e.sessionDir);return C(e.root,t)}function u(e,t){return e?`after ${t} minutes of inactivity`:"disabled"}function E(e,t){return process.platform==="win32"?e.toLowerCase()===t.toLowerCase():e===t}function P(e){return e.replace(/\\/g,"/")}
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runInitWorkspace=
|
|
2
|
-
`):["aib config created","","created: aib.json",`workspace.root: ${String(e["workspace.root"]??".")}`,"","Set the default session directory:","aib config --session-dir .tmp/aib"].join(`
|
|
3
|
-
`)}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runInitWorkspace=_;const i=require("../shared/errors"),s=require("../shared/agent-text"),c=require("../config/workspace-root"),u=require("./config-output"),a=require("./config-command");function _(e,r){const t=p(r),n=(0,c.initWorkspaceRoot)(e,t);return(0,s.attachAgentText)(n,(0,u.formatInitText)((0,a.readConfigTextInput)(e),String(n.status??"created")))}function p(e){const r={};for(let t=0;t<e.length;t+=1){if(e[t]==="--session-dir"){const o=e[t+1];if(!o||o.startsWith("--"))throw new i.CliError("MISSING_FLAG_VALUE","Expected a value after --session-dir.");r.sessionDir=o,t+=1;continue}throw new i.CliError("INIT_USAGE","Usage: aib init [--session-dir .tmp/aib]")}return r}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var V=exports&&exports.__createBinding||(Object.create?(function(
|
|
1
|
+
"use strict";var V=exports&&exports.__createBinding||(Object.create?(function(n,e,t,i){i===void 0&&(i=t);var o=Object.getOwnPropertyDescriptor(e,t);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,i,o)}):(function(n,e,t,i){i===void 0&&(i=t),n[i]=e[t]})),H=exports&&exports.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),I=exports&&exports.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var i=[];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[i.length]=o);return i},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=n(e),o=0;o<i.length;o++)i[o]!=="default"&&V(t,e,i[o]);return H(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isInspectTreeRequest=G,exports.runInspectTree=J,exports.buildInspectTreeResult=Y;const R=I(require("node:fs")),d=I(require("node:path")),Q=require("../shared/agent-text"),y=require("../shared/errors"),E=require("../config/path-display"),A=require("../config/local-config"),O=require("./session-workspace"),X=2,K=80,$=["node_modules/**","**/node_modules/**",".git/**","**/.git/**","dist/**","**/dist/**","build/**","**/build/**","out/**","**/out/**",".tmp/**","**/.tmp/**"];function G(n,e){if(n[0]==="tree")return!0;if(!n.includes("--stdin")||!x(e))return!1;const t=F(e);return t.length>0&&t.some(i=>m(i.op)==="tree")}function J(n,e,t){const i=(0,E.buildDisplayPathAliases)(n,(0,O.readEffectiveSessionPathAliases)(n)),o=(0,A.resolveLocalCliConfig)(n),r=Z(n,e,t,i).map(u=>M(n,u,i,o.config.inspect.tree)),s=r.length===1?r[0]:{results:r};return(0,Q.attachAgentText)(s,oe(s))}function Y(n,e){const t=(0,E.buildDisplayPathAliases)(n,e.aliases??(0,O.readEffectiveSessionPathAliases)(n)),i={scope:e.scope,only:e.only??[],exclude:e.exclude??[],onlyDirs:e.onlyDirs??!1,noDefaultExclude:!1,noConfigExclude:!1};e.displayScope!==void 0&&(i.displayScope=e.displayScope),e.depth!==void 0&&(i.depth=e.depth),e.minDepth!==void 0&&(i.minDepth=e.minDepth),e.limit!==void 0&&(i.limit=e.limit);const o=b(n,i);return M(n,o,t,(0,A.resolveLocalCliConfig)(n).config.inspect.tree)}function Z(n,e,t,i){if(e[0]==="tree")return[k(n,e.slice(1),i)];if(!e.includes("--stdin")||!x(t))throw new y.CliError("INSPECT_TREE_SCOPE_REQUIRED","inspect tree expects a file or directory scope.");const o=F(t);if(o.some(l=>m(l.op)!=="tree"))throw new y.CliError("INSPECT_TREE_MIXED_BATCH_UNSUPPORTED","inspect tree --stdin expects only tree requests.");return o.map((l,r)=>w(n,l,r,i))}function k(n,e,t){const o=e.filter(l=>!l.startsWith("--")&&!ue(e,l))[0];if(!o)throw new y.CliError("INSPECT_TREE_SCOPE_REQUIRED","inspect tree expects a file or directory scope.");return b(n,{scope:o,depth:U(e,"--depth"),minDepth:W(e,"--min-depth")??W(e,"--minDepth"),limit:U(e,"--limit"),only:C(e,"--only"),exclude:[...C(e,"--exclude"),...C(e,"--excludes")],onlyDirs:e.includes("--only-dirs")||e.includes("--onlyDirs"),noDefaultExclude:e.includes("--no-default-exclude")||e.includes("--noDefaultExclude")||e.includes("--ned"),noConfigExclude:e.includes("--no-config-exclude")||e.includes("--noConfigExclude")||e.includes("--nec")},t)}function w(n,e,t,i){const o=m(e.scope)??m(e.file)??m(e.dir)??m(e.directory);if(!o)throw new y.CliError("INSPECT_TREE_SCOPE_REQUIRED",`Inspect tree request at index ${t} requires scope.`);return b(n,{scope:o,depth:P(e.depth),minDepth:N(e.minDepth)??N(e.min_depth),limit:P(e.limit),only:S(e.only)??[],exclude:S(e.exclude)??S(e.excludes)??[],onlyDirs:a(e.onlyDirs)??a(e.only_dirs)??!1,noDefaultExclude:a(e.noDefaultExclude)??a(e.no_default_exclude)??a(e.ned)??!1,noConfigExclude:a(e.noConfigExclude)??a(e.no_config_exclude)??a(e.nec)??!1},i)}function b(n,e,t=[]){const i=e.depth??X,o=e.minDepth??0,l=ce(n,e.scope);if(o>i)throw new y.CliError("INSPECT_TREE_DEPTH_INVALID","inspect tree minDepth must be <= depth.");return{scope:l,displayScope:e.displayScope??(0,E.compactDisplayPath)(n,l,t),depth:i,minDepth:o,limit:e.limit??K,only:e.only,exclude:e.exclude,onlyDirs:e.onlyDirs,noDefaultExclude:e.noDefaultExclude,noConfigExclude:e.noConfigExclude}}function M(n,e,t=[],i={onlyDirs:{exclude:[]},files:{exclude:[]}}){const o=se(e.scope);if(!o)throw new y.CliError("INSPECT_TREE_SCOPE_NOT_FOUND","inspect tree scope was not found.",{scope:L(n,e.scope)});const l=o.isDirectory()?e.scope:d.dirname(e.scope),r=e.displayScope??(0,E.compactDisplayPath)(n,e.scope,t),s=e.onlyDirs?i.onlyDirs:i.files,u=q(e,s),c=u.only.map(D),f=[...e.noDefaultExclude?[]:$,...u.exclude].map(D),p=j(n,l,e.depth,f).filter(h=>e.onlyDirs?h.kind==="dir":h.kind==="file").filter(h=>c.length===0||T(c,h.relative)).filter(h=>h.depth>=e.minDepth),g=p.slice(0,e.limit),z=ee(n,e,l,r,g,u);return{ok:!0,op:"tree",scope:r,depth:e.depth,minDepth:e.minDepth,onlyDirs:e.onlyDirs,[e.onlyDirs?"dirs":"files"]:p.length,shown:g.length,...e.only.length>0?{only:e.only}:{},...e.exclude.length>0?{exclude:e.exclude}:{},...e.noDefaultExclude?{noDefaultExclude:!0}:{},...e.noConfigExclude?{noConfigExclude:!0}:{},...p.length>g.length?{hidden:p.length-g.length}:{},lines:z}}function q(n,e){return{only:n.only,exclude:re([...n.noConfigExclude?[]:e.exclude,...n.exclude])}}function j(n,e,t,i){const o=[],l=(r,s)=>{if(s>t)return;const u=R.readdirSync(r,{withFileTypes:!0}).sort((c,f)=>Number(f.isDirectory())-Number(c.isDirectory())||c.name.localeCompare(f.name));for(const c of u){const f=d.join(r,c.name),_=L(n,f),p=c.isDirectory()?"dir":"file";T(i,_)||(o.push({absolute:f,relative:_,depth:s,kind:p}),c.isDirectory()&&l(f,s+1))}};return l(e,1),o}function ee(n,e,t,i,o,l){const r=[`tree ${i.replace(/\\/g,"/")}`];if(e.minDepth>0&&r.push(`depth: ${e.minDepth}..${e.depth}`),e.only.length>0&&r.push(`only: ${e.only.join(", ")}`),e.exclude.length>0&&r.push(`exclude: ${e.exclude.join(", ")}`),e.noDefaultExclude&&r.push("noDefaultExclude: true"),e.noConfigExclude&&r.push("noConfigExclude: true"),e.onlyDirs&&r.push("onlyDirs: true"),r.push(""),o.length===0)return r.push("no matching paths"),r;if(ne(r,i,t,o),typeof e.limit=="number"&&e.limit>0&&o.length===e.limit){const s=ie(n,e,t,l);s>o.length&&r.push(`+ ${s-o.length} more paths`)}return r}function ne(n,e,t,i){const o=te(t,i);n.push(`${e.replace(/\\/g,"/").replace(/\/?$/,"/")}`),v(n,o," ")}function te(n,e){const t=new Map;for(const i of e){const o=d.relative(n,i.absolute).replace(/\\/g,"/").split("/").filter(Boolean);let l=t;for(let r=0;r<o.length;r+=1){const s=o[r];if(r===o.length-1)l.get(s)instanceof Map||l.set(s,i.kind);else{let c=l.get(s);c instanceof Map||(c=new Map,l.set(s,c)),l=c}}}return t}function v(n,e,t){for(const[i,o]of Array.from(e.entries()).sort(([l,r],[s,u])=>+(u instanceof Map)-+(r instanceof Map)||l.localeCompare(s)))o instanceof Map?(n.push(`${t}${i}/`),v(n,o,`${t} `)):o==="dir"?n.push(`${t}${i}/`):n.push(`${t}${i}`)}function ie(n,e,t,i){const o=i.only.map(D),l=[...e.noDefaultExclude?[]:$,...i.exclude].map(D);return j(n,t,e.depth,l).filter(r=>e.onlyDirs?r.kind==="dir":r.kind==="file").filter(r=>o.length===0||T(o,r.relative)).filter(r=>r.depth>=e.minDepth).length}function oe(n){if(Array.isArray(n.results)){const e=n.results.filter(x).map(t=>Array.isArray(t.lines)?t.lines.filter(i=>typeof i=="string").join(`
|
|
2
2
|
`):"").filter(Boolean);return e.length>0?e.join(`
|
|
3
3
|
|
|
4
|
-
`):null}return Array.isArray(
|
|
5
|
-
`):null}function
|
|
4
|
+
`):null}return Array.isArray(n.lines)?n.lines.filter(e=>typeof e=="string").join(`
|
|
5
|
+
`):null}function F(n){return Array.isArray(n.requests)?n.requests.filter(x):[n]}function D(n){const e=n.replace(/\\/g,"/").replace(/^\.?\//,"");let t="";for(let i=0;i<e.length;i+=1){const o=e[i];if(o==="*"){e[i+1]==="*"?(t+=".*",i+=1):t+="[^/]*";continue}t+=le(o)}return new RegExp(`^${t}$`)}function T(n,e){return n.some(t=>t.test(e)||t.test(`${e}/`))}function re(n){return Array.from(new Set(n))}function le(n){return n.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}function se(n){try{return R.statSync(n)}catch{return null}}function ce(n,e){return d.normalize(d.isAbsolute(e)?e:d.resolve(n,e))}function L(n,e){const t=d.relative(n,e);return(t&&!t.startsWith("..")&&!d.isAbsolute(t)?t:e).replace(/\\/g,"/")}function B(n,e){const t=n.indexOf(e);if(t<0)return null;const i=n[t+1];return i&&!i.startsWith("--")?i:null}function C(n,e){const t=[];for(let i=0;i<n.length;i+=1){if(n[i]!==e)continue;const o=n[i+1];o&&!o.startsWith("--")&&(t.push(...o.split(",").map(l=>l.trim()).filter(Boolean)),i+=1)}return t}function ue(n,e){const t=n.indexOf(e);return t>0&&n[t-1]?.startsWith("--")===!0}function U(n,e){return P(B(n,e))}function W(n,e){return N(B(n,e))}function P(n){const e=typeof n=="number"?n:typeof n=="string"?Number(n):NaN;return Number.isInteger(e)&&e>0?e:null}function N(n){const e=typeof n=="number"?n:typeof n=="string"?Number(n):NaN;return Number.isInteger(e)&&e>=0?e:null}function m(n){return typeof n=="string"&&n.length>0?n:null}function S(n){return typeof n=="string"&&n.length>0?n.split(",").map(e=>e.trim()).filter(Boolean):Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.length>0):null}function a(n){if(typeof n=="boolean")return n;if(typeof n!="string")return null;const e=n.trim().toLowerCase();return e==="true"?!0:e==="false"?!1:null}function x(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";var j=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var l=Object.getOwnPropertyDescriptor(t,n);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,l)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),I=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),v=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(r[r.length]=l);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),l=0;l<r.length;l++)r[l]!=="default"&&j(n,t,r[l]);return I(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runRevealCommand=S;const m=v(require("node:fs")),d=v(require("node:path")),E=require("../shared/agent-text"),x=require("../shared/errors"),p=require("../config/tsconfig-discovery"),R=require("../config/workspace-root");function S(e,t){const[n,...r]=t;if(n!=="tsconfigs"&&n!=="tsaliases")throw new x.CliError("REVEAL_USAGE","Usage: aib reveal tsconfigs|tsaliases [+all] [+nec] [+ned] [--limit N]");const l=U(r),s=(0,R.resolveRequiredWorkspaceRoot)(e),i=(0,p.discoverTsconfigFiles)(s.root,{includeConfigExcluded:l.includeConfigExcluded,includeDefaultExcluded:l.includeDefaultExcluded});if(n==="tsconfigs"){const a={ok:!0,topic:n,root:i.root,visible:i.visible.map(h=>(0,p.toRepoRelative)(i.root,h)),configExcluded:i.configExcluded.map(h=>(0,p.toRepoRelative)(i.root,h)),defaultExcludesIgnored:i.defaultExcludesIgnored,configExcludesIgnored:i.configExcludesIgnored,configExcludePatterns:i.configExcludePatterns};return(0,E.attachAgentText)(a,T(i,l))}const o=i.visible.map(a=>C(i.root,a)).filter(a=>a!==null),f=i.configExcluded.map(a=>C(i.root,a)).filter(a=>a!==null),c={ok:!0,topic:n,root:i.root,configsWithPaths:o.length,aliasPatterns:o.reduce((a,h)=>a+h.paths.length,0),inheritedPathConfigs:o.filter(a=>a.pathsMode==="inherited").length,duplicatedInheritedPathConfigs:o.filter(a=>a.pathsMode==="local-duplicates-inherited").length,overriddenInheritedPathConfigs:o.filter(a=>a.pathsMode==="local-overrides-inherited").length,visible:o.map(F),configExcludedWithPaths:f.map(F),defaultExcludesIgnored:i.defaultExcludesIgnored,configExcludesIgnored:i.configExcludesIgnored,configExcludePatterns:i.configExcludePatterns};return(0,E.attachAgentText)(c,y(i,o,f,l))}function U(e){let t=!1,n=!1,r=!1,l=40;for(let s=0;s<e.length;s+=1){const i=e[s];if(i==="+all"||i==="--all"){t=!0;continue}if(i==="+nec"||i==="--no-config-exclude"){n=!0;continue}if(i==="+ned"||i==="--no-default-exclude"){r=!0;continue}if(i==="--limit"||i==="limit"){const f=e[s+1],c=Number(f);if(!Number.isInteger(c)||c<1)throw new x.CliError("INVALID_LIMIT","Expected positive integer after --limit.");l=c,s+=1;continue}const o=i?.match(/^limit=(\d+)$/);if(o){l=Number(o[1]);continue}throw new x.CliError("REVEAL_USAGE",`Unknown reveal option: ${i}`)}return{all:t,includeConfigExcluded:n,includeDefaultExcluded:r,limit:l}}function T(e,t){const n=e.visible.length,r=e.configExcluded.length,s=["tsconfigs",r>0&&!e.configExcludesIgnored?`${n} visible, ${r} excluded`:e.configExcludesIgnored?`${n} visible, config excludes ignored`:`${n} visible`,""];return s.push(...A(e.root,e.visible,t)),r>0&&!e.configExcludesIgnored&&s.push("","excluded:",..._(e.root,e.configExcluded)),e.defaultExcludesIgnored&&s.push("","default excludes ignored"),s.join(`
|
|
2
|
+
`)}function y(e,t,n,r){const l=t.reduce((u,g)=>u+g.paths.length,0),s=t.filter(u=>u.pathsMode==="inherited").length,i=t.filter(u=>u.pathsMode==="local-duplicates-inherited").length,o=t.filter(u=>u.pathsMode==="local-overrides-inherited").length,f=n.length>0&&!e.configExcludesIgnored?`, ${n.length} alias configs excluded`:e.configExcludesIgnored?", config excludes ignored":"",c=["tsaliases",`${t.length} configs with paths, ${l} alias patterns${f}`],a=[s>0?`${s} inherited`:null,i>0?`${i} duplicate inherited`:null,o>0?`${o} override inherited`:null].filter(u=>u!==null);a.length>0&&c.push(a.join(", "));const h=r.all?t:t.slice(0,r.limit);for(const u of h){c.push("",u.relativeFile),u.extendsValue&&c.push(`extends: ${u.extendsValue}`),c.push(`baseUrl: ${u.baseUrl}`,`paths: ${V(u)}`);for(const g of u.paths)c.push(`${g.alias} -> ${g.targets.join(" ")}`)}return!r.all&&t.length>h.length&&c.push("",`+ ${t.length-h.length} more configs with aliases`),n.length>0&&!e.configExcludesIgnored&&c.push("","excluded alias configs:",..._(e.root,n.map(u=>u.file))),e.defaultExcludesIgnored&&c.push("","default excludes ignored"),c.join(`
|
|
3
|
+
`)}function A(e,t,n){if(t.length===0)return["none"];const r=n.all?t:t.slice(0,n.limit),l=w(r.map(i=>(0,p.toRepoRelative)(e,i))),s=$(l);return!n.all&&t.length>r.length&&s.push(`+ ${t.length-r.length} more`),s}function w(e){const t={dirs:new Map,files:[]};for(const n of e){const r=n.split("/").filter(Boolean);let l=t;for(let s=0;s<r.length;s+=1){const i=r[s]??"";if(s===r.length-1){l.files.push(i);continue}let o=l.dirs.get(i);o||(o={dirs:new Map,files:[]},l.dirs.set(i,o)),l=o}}return t}function $(e,t=""){const n=[];for(const r of e.files.sort((l,s)=>l.localeCompare(s)))n.push(`${t}${r}`);for(const[r,l]of Array.from(e.dirs.entries()).sort(([s],[i])=>s.localeCompare(i)))n.push(`${t}${r}/`),n.push(...$(l,`${t} `));return n}function _(e,t){const n=new Map;for(const r of t){const l=(0,p.toRepoRelative)(e,r),[s]=l.split("/"),i=s&&s!==l?`${s}/**`:l;n.set(i,(n.get(i)??0)+1)}return Array.from(n.entries()).sort(([r],[l])=>r.localeCompare(l)).map(([r,l])=>`${r} x${l}`)}function C(e,t){const n=M(t,new Map);if(!n)return null;const r=O(n);if(!r.paths)return null;const l=Object.entries(r.paths).map(([s,i])=>({alias:s,targets:i})).filter(s=>s.targets.length>0).sort((s,i)=>s.alias.localeCompare(i.alias));return l.length===0?null:{file:t,relativeFile:(0,p.toRepoRelative)(e,t),...n.extendsValue?{extendsValue:n.extendsValue}:{},...n.extendsFile?{extendsFile:(0,p.toRepoRelative)(e,n.extendsFile)}:{},baseUrl:D(t,r.baseUrl),pathsMode:r.pathsMode,...r.pathsSourceFile?{pathsSourceFile:(0,p.toRepoRelative)(e,r.pathsSourceFile)}:{},paths:l}}function F(e){return{file:e.relativeFile,...e.extendsValue?{extends:e.extendsValue}:{},...e.extendsFile?{extendsFile:e.extendsFile}:{},baseUrl:e.baseUrl,pathsMode:e.pathsMode,...e.pathsSourceFile?{pathsSourceFile:e.pathsSourceFile}:{},paths:Object.fromEntries(e.paths.map(t=>[t.alias,t.targets]))}}function V(e){switch(e.pathsMode){case"inherited":return`inherited from ${e.pathsSourceFile??"extended config"}`;case"local-duplicates-inherited":return"local, duplicates inherited";case"local-overrides-inherited":return"local, overrides inherited";case"local":return"local"}}function M(e,t){const n=d.resolve(e);if(t.has(n))return t.get(n)??null;const r=J(n),l=b(r.compilerOptions)?r.compilerOptions:{},s=typeof r.extends=="string"&&r.extends.trim().length>0?r.extends.trim():void 0,i=s?N(n,s):null,o=i?M(i,t):null,f=B(l.paths),c={file:n,...s?{extendsValue:s}:{},...i?{extendsFile:i}:{},...typeof l.baseUrl=="string"?{localBaseUrl:l.baseUrl}:{},...f?{localPaths:f}:{},...o?{parent:o}:{}};return t.set(n,c),c}function O(e){const t=e.parent?O(e.parent):null,n=e.localBaseUrl?d.resolve(d.dirname(e.file),e.localBaseUrl):t?.baseUrl??d.dirname(e.file);if(e.localPaths){const r=t?.paths??null,l=r?q(e.localPaths,r)?"local-duplicates-inherited":"local-overrides-inherited":"local";return{baseUrl:n,paths:e.localPaths,pathsMode:l,pathsSourceFile:e.file}}return t?.paths?{baseUrl:n,paths:t.paths,pathsMode:"inherited",...t.pathsSourceFile?{pathsSourceFile:t.pathsSourceFile}:{}}:{baseUrl:n,paths:null,pathsMode:"local"}}function N(e,t){const n=t.startsWith(".")||d.isAbsolute(t)?d.resolve(d.dirname(e),t):d.resolve(d.dirname(e),"node_modules",t);return(d.extname(n)?[n]:[`${n}.json`,d.join(n,"tsconfig.json")]).find(l=>m.existsSync(l)&&m.statSync(l).isFile())??null}function B(e){if(!b(e))return null;const t=Object.entries(e).map(([n,r])=>[n,Array.isArray(r)?r.filter(l=>typeof l=="string"):[]]).filter(([,n])=>n.length>0);return t.length>0?Object.fromEntries(t):null}function q(e,t){return JSON.stringify(P(e))===JSON.stringify(P(t))}function P(e){return Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,[...n]]))}function D(e,t){const n=d.relative(d.dirname(e),t).replace(/\\/g,"/");return n.length===0?".":n}function J(e){try{const t=m.readFileSync(e,"utf8"),n=JSON.parse(L(t).replace(/,\s*([}\]])/g,"$1"));return b(n)?n:{}}catch{return{}}}function L(e){let t="",n=!1,r=!1;for(let l=0;l<e.length;l+=1){const s=e[l]??"",i=e[l+1]??"";if(n){t+=s,r?r=!1:s==="\\"?r=!0:s==='"'&&(n=!1);continue}if(s==='"'){n=!0,t+=s;continue}if(s==="/"&&i==="/"){for(;l<e.length&&e[l]!==`
|
|
4
|
+
`;)l+=1;t+=`
|
|
5
|
+
`;continue}if(s==="/"&&i==="*"){for(l+=2;l<e.length&&!(e[l]==="*"&&e[l+1]==="/");)l+=1;l+=1;continue}t+=s}return t}function b(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runSyncCommand=
|
|
2
|
-
`)}function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runSyncCommand=f;const l=require("../shared/agent-text"),a=require("../config/workspace-state");function f(e,n){const t=n.includes("--status"),s=t?(0,a.workspaceStateStatus)(e):(0,a.syncWorkspaceState)(e),o=s?{ok:!0,synced:!t,state:(0,a.formatWorkspaceStateSummary)(s)}:{ok:!0,synced:!1,state:null};return(0,l.attachAgentText)(o,y(o))}function y(e){const n=e.state;if(!n||typeof n!="object"||Array.isArray(n))return"sync not initialized";const t=n,s=Object.keys(u(t.aliases)?t.aliases:{}).length,o=Number(t.tsconfigCount??0),c=Number(t.excludedTsconfigCount??0),i=c>0?`${o} visible, ${c} excluded`:String(o),r=e.synced===!1?["sync status",`root: ${String(t.root??"")}`,`config: ${String(t.config??"")}`,`AIB path aliases: ${s}`,`TypeScript configs: ${i}`,`watchers: ${String(t.watchers??"")}`]:["sync ok","config loaded",`AIB path aliases: ${s===0?"none":s}`,`TypeScript configs: ${i}`];return e.synced!==!1&&s===0&&r.push("","If you repeatedly use long paths, add pathAliases to aib.json."),u(t.lastError)&&r.push(`lastError: ${String(t.lastError.code??"SYNC_ERROR")}`),r.join(`
|
|
2
|
+
`)}function u(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`;)
|
|
3
|
-
`;continue}if(
|
|
1
|
+
"use strict";var I=exports&&exports.__createBinding||(Object.create?(function(e,n,t,r){r===void 0&&(r=t);var c=Object.getOwnPropertyDescriptor(n,t);(!c||("get"in c?!n.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,c)}):(function(e,n,t,r){r===void 0&&(r=t),e[r]=n[t]})),N=exports&&exports.__setModuleDefault||(Object.create?(function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}):function(e,n){e.default=n}),A=exports&&exports.__importStar||(function(){var e=function(n){return e=Object.getOwnPropertyNames||function(t){var r=[];for(var c in t)Object.prototype.hasOwnProperty.call(t,c)&&(r[r.length]=c);return r},e(n)};return function(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var r=e(n),c=0;c<r.length;c++)r[c]!=="default"&&I(t,n,r[c]);return N(t,n),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_LOCAL_CLI_CONFIG=exports.LOCAL_CLI_CONFIG_FILE_NAMES=void 0,exports.resolveLocalCliConfig=E;const _=A(require("node:fs")),a=A(require("node:path"));exports.LOCAL_CLI_CONFIG_FILE_NAMES=["aib.json"],exports.DEFAULT_LOCAL_CLI_CONFIG={inspect:{graph:{exclude:[]},tree:{onlyDirs:{exclude:[]},files:{exclude:[]}}},sync:{tsconfig:{exclude:[]}}};function E(e){const n=S(e);let t=T();const r=[];for(const c of n)for(const i of exports.LOCAL_CLI_CONFIG_FILE_NAMES){const u=a.join(c,i),f=m(u);f&&(t=j(t,f),r.push(u))}return{config:t,sources:r}}function S(e){const n=[];let t=a.resolve(e);const r=a.parse(t).root;for(;n.push(t),t!==r;){const c=a.dirname(t);if(c===t)break;t=c}return n.reverse()}function m(e){if(!_.existsSync(e)||!_.statSync(e).isFile())return null;try{const n=M(_.readFileSync(e,"utf8"));return v(n)}catch{return null}}function v(e){const n=s(e.aib)?e.aib:{},t=s(e.inspect)?e.inspect:void 0,r=s(n.inspect)?n.inspect:void 0,c=t&&s(t.graph)?t.graph:void 0,i=r&&s(r.graph)?r.graph:void 0,u=t&&s(t.tree)?t.tree:void 0,f=r&&s(r.tree)?r.tree:void 0,g=s(e.sync)?e.sync:void 0,p=s(n.sync)?n.sync:void 0,h=g&&s(g.tsconfig)?g.tsconfig:void 0,C=p&&s(p.tsconfig)?p.tsconfig:void 0,F=o(e["inspect.graph.exclude"]),b=c?o(c.exclude):[],D=i?o(i.exclude):[],L=l([...b,...D,...F]),y={onlyDirs:{exclude:l([...o(e["inspect.tree.onlyDirs.exclude"]),...o(e["inspect.tree.only_dirs.exclude"]),...d(u,"onlyDirs","exclude"),...d(u,"only_dirs","exclude"),...d(f,"onlyDirs","exclude"),...d(f,"only_dirs","exclude")])},files:{exclude:l([...o(e["inspect.tree.files.exclude"]),...d(u,"files","exclude"),...d(f,"files","exclude")])}},x=l([...o(e["sync.tsconfig.exclude"]),...h?o(h.exclude):[],...C?o(C.exclude):[]]);return L.length===0&&y.onlyDirs.exclude.length===0&&y.files.exclude.length===0&&x.length===0?null:{inspect:{graph:{exclude:L},tree:y},sync:{tsconfig:{exclude:x}}}}function d(e,n,t){if(!e)return[];const r=s(e[n])?e[n]:void 0;return r?o(r[t]):[]}function O(e,n){return{exclude:l([...e.exclude,...n?.exclude??[]])}}function j(e,n){return{inspect:{graph:{exclude:l([...e.inspect.graph.exclude,...n.inspect?.graph?.exclude??[]])},tree:{onlyDirs:O(e.inspect.tree.onlyDirs,n.inspect?.tree?.onlyDirs),files:O(e.inspect.tree.files,n.inspect?.tree?.files)}},sync:{tsconfig:{exclude:l([...e.sync.tsconfig.exclude,...n.sync?.tsconfig?.exclude??[]])}}}}function T(){return{inspect:{graph:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.graph.exclude]},tree:{onlyDirs:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.onlyDirs.exclude]},files:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.inspect.tree.files.exclude]}}},sync:{tsconfig:{exclude:[...exports.DEFAULT_LOCAL_CLI_CONFIG.sync.tsconfig.exclude]}}}}function M(e){const n=G(e),t=JSON.parse(n.replace(/,\s*([}\]])/g,"$1"));return s(t)?t:{}}function G(e){let n="",t=!1,r=!1;for(let c=0;c<e.length;c+=1){const i=e[c]??"",u=e[c+1]??"";if(t){n+=i,r?r=!1:i==="\\"?r=!0:i==='"'&&(t=!1);continue}if(i==='"'){t=!0,n+=i;continue}if(i==="/"&&u==="/"){for(;c<e.length&&e[c]!==`
|
|
2
|
+
`;)c+=1;n+=`
|
|
3
|
+
`;continue}if(i==="/"&&u==="*"){for(c+=2;c<e.length&&!(e[c]==="*"&&e[c+1]==="/");)c+=1;c+=1;continue}n+=i}return n}function o(e){return Array.isArray(e)?e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0):[]}function l(e){return Array.from(new Set(e))}function s(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isRemovedAgentCommand=h,exports.resolveCanonicalCommandAlias=p;const r=require("../commands/shared"),c=require("../shared/errors"),M=require("../shared/types"),d=new Set(["doctor","diagnostics","init","runtime","session","sync","trace","observability","feedback","note","generate-docs","config","view","qr"]),a=new Set(M.CANONICAL_METHOD_IDS),l=new Set(["applyModulePlan","validateModulePlan","findImporters","findUnusedImports","moveToFile","renameEntities","refactorBatch","normalizeImports","input"]);function h(e){return l.has(e)}function v(e){const s=new Map;for(const[i,t]of Object.entries(e)){if(!a.has(i)||!t)continue;const n=s.get(t)??[];n.push(i),s.set(t,n)}return s}async function p(e,s,i,t){if(l.has(e)||d.has(e)||a.has(e))return e;try{const n={};i!==void 0&&(n.explicitInstanceId=i),t!==void 0&&(n.autoStartIde=t);const f=await(0,r.resolveTargetInstance)(s,n),u=await(0,r.fetchEffectiveConfig)(f.entry),o=v(u.methodAliases).get(e);if(!o||o.length===0)return e;if(o.length>1)throw new c.CliError("AMBIGUOUS_COMMAND_ALIAS",`Alias "${e}" resolves to multiple commands.`,{alias:e,canonicalCommands:o});const[A]=o;return A??e}catch(n){if(n instanceof c.CliError&&n.code==="AMBIGUOUS_COMMAND_ALIAS")throw n;return e}}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isRemovedAgentCommand=h,exports.resolveCanonicalCommandAlias=p;const r=require("../commands/shared"),c=require("../shared/errors"),M=require("../shared/types"),d=new Set(["doctor","diagnostics","init","runtime","session","sync","reveal","trace","observability","feedback","note","generate-docs","config","view","qr"]),a=new Set(M.CANONICAL_METHOD_IDS),l=new Set(["applyModulePlan","validateModulePlan","findImporters","findUnusedImports","moveToFile","renameEntities","refactorBatch","normalizeImports","input"]);function h(e){return l.has(e)}function v(e){const s=new Map;for(const[i,t]of Object.entries(e)){if(!a.has(i)||!t)continue;const n=s.get(t)??[];n.push(i),s.set(t,n)}return s}async function p(e,s,i,t){if(l.has(e)||d.has(e)||a.has(e))return e;try{const n={};i!==void 0&&(n.explicitInstanceId=i),t!==void 0&&(n.autoStartIde=t);const f=await(0,r.resolveTargetInstance)(s,n),u=await(0,r.fetchEffectiveConfig)(f.entry),o=v(u.methodAliases).get(e);if(!o||o.length===0)return e;if(o.length>1)throw new c.CliError("AMBIGUOUS_COMMAND_ALIAS",`Alias "${e}" resolves to multiple commands.`,{alias:e,canonicalCommands:o});const[A]=o;return A??e}catch(n){if(n instanceof c.CliError&&n.code==="AMBIGUOUS_COMMAND_ALIAS")throw n;return e}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var _=exports&&exports.__createBinding||(Object.create?(function(n,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,i,r)}):(function(n,e,t,i){i===void 0&&(i=t),n[i]=e[t]})),h=exports&&exports.__setModuleDefault||(Object.create?(function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}):function(n,e){n.default=e}),a=exports&&exports.__importStar||(function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=n(e),r=0;r<i.length;r++)i[r]!=="default"&&_(t,e,i[r]);return h(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.discoverTsconfigFiles=p,exports.toRepoRelative=O;const b=a(require("node:fs")),u=a(require("node:path")),d=require("./glob-match"),E=require("./local-config"),y=new Set(["node_modules",".git",".tmp","dist","build","out"]);function p(n,e={}){const t=u.resolve(n),i=e.includeDefaultExcluded===!0,r=e.includeConfigExcluded===!0,c=(0,E.resolveLocalCliConfig)(t).config.sync.tsconfig.exclude,v=j(t,{includeDefaultExcluded:i}),s=[],f=[];for(const o of v){const l=D(u.relative(t,o));if(!r&&(0,d.matchesAnyGlob)(l,c)){f.push(o);continue}s.push(o)}return{root:t,visible:s.sort((o,l)=>o.localeCompare(l)),configExcluded:f.sort((o,l)=>o.localeCompare(l)),defaultExcludesIgnored:i,configExcludesIgnored:r,configExcludePatterns:[...c]}}function O(n,e){const t=u.relative(u.resolve(n),u.resolve(e));return(0,d.normalizeGlobPath)(t||".")}function j(n,e){const t=[];return g(n,0,t,e),t}function g(n,e,t,i){if(e>5)return;let r;try{r=b.readdirSync(n,{withFileTypes:!0})}catch{return}for(const c of r){if(c.isDirectory()){if(!i.includeDefaultExcluded&&y.has(c.name))continue;g(u.join(n,c.name),e+1,t,i);continue}c.isFile()&&/^tsconfig(?:\..+)?\.json$/i.test(c.name)&&t.push(u.join(n,c.name))}}function D(n){return n.replace(/\\/g,"/")}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`,"utf8");const
|
|
3
|
-
`,"utf8"),
|
|
1
|
+
"use strict";var S=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),O=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),m=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),o=0;o<r.length;o++)r[o]!=="default"&&S(n,t,r[o]);return O(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.AIB_CONFIG_FILE_NAME=void 0,exports.initWorkspaceRoot=h,exports.resolveWorkspaceRoot=p,exports.resolveRequiredWorkspaceRoot=C,exports.readWorkspaceNumberConfig=D,exports.readWorkspaceBooleanConfig=w,exports.readWorkspaceStringConfig=k,exports.updateWorkspaceConfig=E,exports.workspaceConfigSummary=W,exports.isPathInsideOrEqual=A;const c=m(require("node:fs")),s=m(require("node:path")),N=require("./env-vars"),M=require("../shared/errors");exports.AIB_CONFIG_FILE_NAME="aib.json";function h(e,t={}){const n=s.join(s.resolve(e),exports.AIB_CONFIG_FILE_NAME),r=c.existsSync(n),o=r?_(n):{},f=a(t.sessionDir)??a(o.sessionDir),d=i(o["session.ttlMinutes"]),g=i(o["session.ttlCleanMinutes"])??d??60,I=i(o["session.ttlDeleteMinutes"])??d??60,l={...o,"workspace.root":a(o["workspace.root"])??".",...f?{sessionDir:f}:{},"session.autoDelete":u(o["session.autoDelete"])??!0,"session.ttlDeleteMinutes":I,"session.autoClean":u(o["session.autoClean"])??!0,"session.ttlCleanMinutes":g,"runtime.managedIdeTtlMinutes":i(o["runtime.managedIdeTtlMinutes"])??15,"runtime.managedIdeWatchdogIntervalMs":i(o["runtime.managedIdeWatchdogIntervalMs"])??3e4,"runtime.autoStopManagedIde":u(o["runtime.autoStopManagedIde"])??!0};c.writeFileSync(n,`${JSON.stringify(l,null,2)}
|
|
2
|
+
`,"utf8");const y=i(l["session.ttlCleanMinutes"])??60,v=i(l["runtime.managedIdeTtlMinutes"])??15,b=!r||JSON.stringify(o)!==JSON.stringify(l);return{status:r?b?"updated":"unchanged":"created",...r?{}:{created:exports.AIB_CONFIG_FILE_NAME},configPath:n,root:s.resolve(e),"workspace.root":a(l["workspace.root"])??".",...f?{sessionDir:f}:{},"session.autoClean":u(l["session.autoClean"])??!0,"session.ttlCleanMinutes":y,"session.autoDelete":u(l["session.autoDelete"])??!0,"session.ttlDeleteMinutes":i(l["session.ttlDeleteMinutes"])??60,"runtime.autoStopManagedIde":u(l["runtime.autoStopManagedIde"])??!0,"runtime.managedIdeTtlMinutes":v,...f?{}:{next:"Set the default session directory: aib config --session-dir .tmp/aib"}}}function p(e){const t=a(process.env[N.CLI_ENV.workspaceRoot]);if(t){const d=s.resolve(e,t),g=s.join(d,exports.AIB_CONFIG_FILE_NAME),I=c.existsSync(g)?_(g):{"workspace.root":"."};return{root:d,configPath:g,config:I}}const n=F(e);if(!n)return null;const r=_(n),o=s.dirname(n),f=a(r["workspace.root"])??".";return{root:s.resolve(o,f),configPath:n,config:r}}function C(e){const t=p(e);if(t)return t;const n=j(e,".git");throw new M.CliError("WORKSPACE_ROOT_NOT_INITIALIZED","Workspace root is not initialized.",{cwd:s.resolve(e),...n?{detectedGitRoot:n}:{},next:"Go to your repo root and run: aib init"})}function D(e,t,n){const r=p(e);return(r?i(r.config[t]):null)??n}function w(e,t,n){const r=p(e);return(r?u(r.config[t]):null)??n}function k(e,t,n){const r=p(e);return(r?a(r.config[t]):null)??n}function E(e,t){const n=C(e),r={...n.config,...t};return c.writeFileSync(n.configPath,`${JSON.stringify(r,null,2)}
|
|
3
|
+
`,"utf8"),r}function W(e){const t=i(e["session.ttlMinutes"]);return{"workspace.root":a(e["workspace.root"])??".",...a(e.sessionDir)?{sessionDir:a(e.sessionDir)}:{},"session.autoClean":u(e["session.autoClean"])??!0,"session.ttlCleanMinutes":i(e["session.ttlCleanMinutes"])??t??60,"session.autoDelete":u(e["session.autoDelete"])??!0,"session.ttlDeleteMinutes":i(e["session.ttlDeleteMinutes"])??t??60,"runtime.autoStopManagedIde":u(e["runtime.autoStopManagedIde"])??!0,"runtime.managedIdeTtlMinutes":i(e["runtime.managedIdeTtlMinutes"])??15}}function A(e,t){const n=s.resolve(e).toLowerCase(),r=s.resolve(t).toLowerCase();return r===n||r.startsWith(`${n}${s.sep}`)}function F(e){let t=s.resolve(e);const n=s.parse(t).root;for(;;){const r=s.join(t,exports.AIB_CONFIG_FILE_NAME);if(c.existsSync(r)&&c.statSync(r).isFile())return r;if(t===n)break;const o=s.dirname(t);if(o===t)break;t=o}return null}function j(e,t){let n=s.resolve(e);const r=s.parse(n).root;for(;;){if(c.existsSync(s.join(n,t)))return n;if(n===r)break;const o=s.dirname(n);if(o===n)break;n=o}return null}function _(e){try{const t=JSON.parse(c.readFileSync(e,"utf8"));return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch(t){throw new M.CliError("AIB_CONFIG_INVALID","aib.json must be valid JSON.",{file:e,error:t instanceof Error?t.message:String(t)})}}function a(e){return typeof e=="string"&&e.trim()?e.trim():null}function i(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()){const t=Number(e);return Number.isFinite(t)?t:null}return null}function u(e){if(typeof e=="boolean")return e;if(typeof e!="string")return null;const t=e.trim().toLowerCase();return["1","true","yes","on"].includes(t)?!0:["0","false","no","off"].includes(t)?!1:null}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var E=exports&&exports.__createBinding||(Object.create?(function(e,t,r,o){o===void 0&&(o=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,n)}):(function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]})),A=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),b=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var o=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(o[o.length]=n);return o},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var o=e(t),n=0;n<o.length;n++)o[n]!=="default"&&E(r,t,o[n]);return A(r,t),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureWorkspaceState=j,exports.syncWorkspaceState=w,exports.workspaceStateStatus=L,exports.workspaceStateSummary=N,exports.formatWorkspaceStateSummary=T;const h=b(require("node:fs")),s=b(require("node:path")),k=require("./env-vars"),C=require("./import-rules"),v=require("./mutation-comments"),M=require("./path-aliases"),q=require("./tsconfig-discovery"),g=require("./workspace-root"),D=require("../shared/errors"),i=new Map,p=new Map;function j(e){const t=O(e),r=i.get(u(t.root));return r?_(r):R(t)}function w(e){const t=(0,g.resolveRequiredWorkspaceRoot)(e);return S(e,t),R(t)}function R(e){const t=s.resolve(e.root),r=u(t),o=i.get(r);try{const n=(0,M.normalizePathAliasMap)(e.config.pathAliases,"aib.json pathAliases"),m=(0,C.normalizeImportRules)(t,e.config.importRules),a=(0,v.normalizeMutationCommentsPolicy)(e.config.mutationComments),d=(0,q.discoverTsconfigFiles)(t),l=d.visible,f=process.env[k.CLI_ENV.disableWatchers]==="1",c={root:t,configPath:e.configPath,config:e.config,pathAliases:n,importRules:m,mutationComments:a,tsconfigs:l,excludedTsconfigCount:d.configExcluded.length,lastSyncAt:new Date().toISOString(),watchersStarted:o?.watchersStarted===!0&&o.watchersDisabled===f,watchersDisabled:f,watchers:o?.watchers??[]};return i.set(r,c),S(t,e),!f&&!c.watchersStarted&&F(c),f&&o&&o.watchers.length>0&&(W(o),c.watchers=[],c.watchersStarted=!1),_(c)}catch(n){throw o&&(o.lastError=P(n)),n}}function L(e){const t=O(e),r=i.get(u(t.root));return r?_(r):null}function N(e){const t=w(e);return T(t)}function T(e){return{root:e.root,config:e.configPath,aliases:e.pathAliases,importRules:(0,C.importRulesToJson)(e.importRules),mutationComments:(0,v.mutationCommentsPolicyToJson)(e.mutationComments),tsconfigCount:e.tsconfigs.length,excludedTsconfigCount:e.excludedTsconfigCount,watchers:e.watchersDisabled?"disabled":e.watchersStarted?"started":"not-started",lastSyncAt:e.lastSyncAt,...e.lastError?{lastError:e.lastError}:{}}}function F(e){W(e);const t=[e.configPath,...e.tsconfigs].filter(r=>h.existsSync(r));e.watchers=t.flatMap(r=>{try{return[h.watch(r,{persistent:!1},()=>I(e.root))]}catch{return[]}}),e.watchersStarted=e.watchers.length>0}function W(e){for(const t of e.watchers)try{t.close()}catch{}e.watchers=[],e.watchersStarted=!1,e.debounceTimer&&(clearTimeout(e.debounceTimer),delete e.debounceTimer)}function I(e){const t=i.get(u(e));t&&(t.debounceTimer&&clearTimeout(t.debounceTimer),t.debounceTimer=setTimeout(()=>{const r=i.get(u(e));if(r)try{w(e)}catch(o){r.lastError=P(o)}},100),t.debounceTimer.unref())}function O(e){const t=y(e),r=p.get(t);if(r&&!K(e,r.configPath))return r;const o=(0,g.resolveRequiredWorkspaceRoot)(e);return S(e,o),o}function K(e,t){const r=s.resolve(t).toLowerCase(),o=s.dirname(r);let n=s.resolve(e);const m=s.parse(n).root;for(;;){const a=s.join(n,g.AIB_CONFIG_FILE_NAME);if(h.existsSync(a)&&h.statSync(a).isFile())return s.resolve(a).toLowerCase()!==r;if(n.toLowerCase()===o||n===m)return!1;const l=s.dirname(n);if(l===n)return!1;n=l}}function S(e,t){p.set(y(e),t),p.set(y(t.root),t)}function u(e){return s.resolve(e).toLowerCase()}function y(e){return s.resolve(e).toLowerCase()}function _(e){return{root:e.root,configPath:e.configPath,config:e.config,pathAliases:e.pathAliases,importRules:[...e.importRules],mutationComments:{...e.mutationComments},tsconfigs:[...e.tsconfigs],excludedTsconfigCount:e.excludedTsconfigCount,lastSyncAt:e.lastSyncAt,watchersStarted:e.watchersStarted,watchersDisabled:e.watchersDisabled,...e.lastError?{lastError:e.lastError}:{}}}function P(e){return e instanceof D.CliError?{code:e.code,message:e.message,...e.details?{details:JSON.parse(JSON.stringify(e.details))}:{}}:{code:"SYNC_ERROR",message:e instanceof Error?e.message:String(e)}}
|
package/dist/dsl/aib-dsl.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.compileAibDsl=V;const L=new Set(["file","exports","members","code","deps","usages","duplicates","graph","tree","cycles","imports"]),R=new Set(["rename","move","plan","module"]),$=new Set(["imports.normalize"]),K=new Set(["view"]),w="__aibDslDefaultFile",g="__aibDslDefaultScope",A="__aibDslDefaultTarget";function V(e,s={}){if(s.tolerantInspect===!0)return j(e);const t={},n=[],i=[],o=[],r=[],a=[];let c=null;for(const u of N(e)){const[f,...p]=u.tokens;if(f){if(f.startsWith("@")){M(t,f,p,u.lineNumber);continue}if(L.has(f)){c=y(c,"inspect",u.lineNumber),n.push(U(f,p,t,u.lineNumber));continue}if(R.has(f)){c=y(c,"mutation",u.lineNumber),f==="plan"||f==="module"?o.push(oe(p,u.lineNumber)):i.push(ie(f,p,u.lineNumber));continue}if($.has(f)){c=y(c,"imports",u.lineNumber),r.push(se(p,t,u.lineNumber));continue}if(K.has(f)){c=y(c,"view",u.lineNumber),a.push(re(p,u.lineNumber));continue}throw l(u.lineNumber,`Unknown DSL operation: ${f}`)}}if(c==="inspect")return{command:"inspect",payload:C(t,n)};if(o.length>0&&i.length>0)throw l(0,"Cannot mix modulePlan rows with rename/move mutation rows.");if(o.length>0)return E(t.sourceFile,"@source",0),{command:"modulePlan",payload:D({sourceFile:t.sourceFile,modules:o,expectEmpty:t.expectEmpty===!0?!0:void 0,save:t.save})};if(i.length===1){E(t.sourceFile,"@source",0);const u=i[0];return u.op==="rename"?{command:"rename",payload:D({sourceFile:t.sourceFile,renames:u.renames,save:t.save})}:{command:"move.toFile",payload:D({sourceFile:t.sourceFile,targetFile:u.targetFile,entities:u.entities,save:t.save})}}if(i.length>1)return E(t.sourceFile,"@source",0),{command:"refactor.batch",payload:D({sourceFile:t.sourceFile,requests:i,save:t.save})};if(r.length>0)return{command:"imports.normalize",payload:r.length===1?r[0]:{requests:r}};if(a.length>0)return{command:"view",payload:a.length===1?a[0]:{views:a}};throw l(0,"DSL document has no operations.")}function j(e){const s={},t=[],n=[];let i=null;const o=e.split(/\r?\n/);for(let a=0;a<o.length;a+=1){const c=a+1,u=o[a]??"",f=_(u).trim();if(!f)continue;let p;try{p=O(f,c)}catch(d){n.push({line:c,message:I(d instanceof Error?d.message:String(d))});continue}const[m,...T]=p;if(m){if(m.startsWith("@")){M(s,m,T,c);continue}if(L.has(m)){i=y(i,"inspect",c);try{t.push(U(m,T,s,c))}catch(d){n.push({line:c,message:I(d instanceof Error?d.message:String(d))})}continue}if(R.has(m)||$.has(m))throw l(c,"Cannot mix inspect, mutation, and imports operations in one DSL document.");n.push({line:c,message:`Unknown DSL operation: ${m}`})}}if(t.length===0)throw n.length>0?l(n[0].line,n[0].message):l(0,"DSL document has no operations.");const r=C(s,t);return n.length>0&&(r.dslDiagnostics=n.map(a=>({line:a.line,message:a.message}))),{command:"inspect",payload:r,...n.length>0?{diagnostics:n}:{}}}function I(e){return e.replace(/^DSL(?: line \d+)?:\s*/,"")}function N(e){return e.split(/\r?\n/).flatMap((s,t)=>{const n=_(s).trim();return n?[{lineNumber:t+1,tokens:O(n,t+1)}]:[]})}function _(e){let s=null;for(let t=0;t<e.length;t+=1){const n=e[t];if((n==='"'||n==="'")&&e[t-1]!=="\\"&&(s=s===n?null:s??n),n==="#"&&s===null)return e.slice(0,t)}return e}function O(e,s){const t=[];let n="",i=null;for(let o=0;o<e.length;o+=1){const r=e[o];if(i){r===i&&e[o-1]!=="\\"?i=null:n+=r;continue}if(r==='"'||r==="'"){i=r;continue}if(/\s/.test(r)){n&&(t.push(n),n="");continue}n+=r}if(i)throw l(s,"Unclosed quote.");return n&&t.push(n),t}function M(e,s,t,n){const i=t.join(" ").trim();if(!i)throw l(n,`${s} requires a value.`);switch(s){case"@file":e.file=i;return;case"@source":{const{value:o,flags:r}=B(t,n,s);e.sourceFile=o,r.has("expectEmpty")&&(e.expectEmpty=!0);return}case"@scope":e.scope=i;return;case"@target":e.target=i;return;case"@save":e.save=i;return;default:throw l(n,`Unknown DSL default: ${s}`)}}function B(e,s,t){const n=new Set,i=[];for(const r of e){if(r.startsWith("+")&&r.length>1){n.add(r.slice(1));continue}i.push(r)}const o=i.join(" ").trim();if(!o)throw l(s,`${t} requires a value.`);return{value:o,flags:n}}function y(e,s,t){if(e&&e!==s)throw l(t,"Cannot mix inspect, mutation, and imports operations in one DSL document.");return s}function U(e,s,t,n){const{positional:i,fields:o}=S(s,n),r={op:e};if(Object.assign(r,o),e==="file"||e==="exports"||e==="imports"){const a=i[0]??o.file,c=a??t.file;return c&&(r.file=c,a||h(r,w)),r}if(e==="members"){const c=W(r,i,t).map(v);return c.length===1&&!o.entity&&!o.entities?r.entity=c[0]:c.length>0&&!o.entities&&(r.entities=c),r}if(e==="code"||e==="deps"){const c=W(r,i,t).map(v);return e==="deps"&&c.length===1&&!o.entities&&!o.entity?r.entity=c[0]:c.length>0&&!o.entities&&!o.entity&&(r.entities=c),r}if(e==="usages"){const a=o.target??i[0],c=a??t.target??t.file;c&&(r.target=c,a||h(r,A));const u=o.entity??o.entities,p=(c===i[0]?i.slice(1):i).map(v);return!u&&p.length===1?r.entity=p[0]:!u&&p.length>1&&(r.entities=p),r}if(e==="duplicates"){const a=o.scope??i[0],c=a??t.scope;return c&&(r.scope=c,a||h(r,g)),r}if(e==="tree"){const a=o.scope??i[0],c=a??t.scope;return c&&(r.scope=c,a||h(r,g)),r}if(e==="cycles"){const a=o.scope??i[0],c=a??t.scope;return c&&(r.scope=c,a||h(r,g)),r}if(e==="graph"){const a=o.scope??i[0],c=a??t.scope;return c&&!r.fromFile&&(r.scope=c,a||h(r,g)),r}return r}function G(e,s){!e.file&&!e.fromFile&&s.file&&(e.file=s.file,h(e,w))}function W(e,s,t){return!e.file&&!e.fromFile&&s.length>0&&H(s[0])?(e.file=s[0],s.slice(1)):(G(e,t),s)}function H(e){return e.includes("/")||e.includes("\\")||/^@[^/\\]+[/\\]/.test(e)||/\.(?:[cm]?[jt]sx?|d\.ts)$/i.test(e)}function h(e,s){Object.defineProperty(e,s,{value:!0,enumerable:!1})}function S(e,s){const t=[],n={};for(const i of e){if(i.startsWith("+")&&i.length>1){x(n,i.slice(1),!0);continue}if(i.startsWith("-")&&i.length>1){x(n,i.slice(1),!1);continue}if(i.startsWith(">")&&i.length>1){x(n,"save",i.slice(1));continue}const o=i.indexOf("=");if(o>0){const r=i.slice(0,o),a=i.slice(o+1);x(n,q(r),J(r,a));continue}if(i==="->")throw l(s,"Unexpected move separator in inspect request.");t.push(i)}return{positional:t,fields:n}}function x(e,s,t){const n=e[s];if(n===void 0){e[s]=t;return}if(b(s)){e[s]=[...z(n),...z(t)];return}e[s]=t}function b(e){return e==="focus"||e==="scope"||e==="scopes"||e==="file"||e==="files"||e==="exclude"||e==="excludes"||e==="include"||e==="includes"||e==="pathExclude"||e==="pathExcludes"||e==="excludePath"||e==="excludePaths"||e==="entities"||e==="only"||e==="except"||e==="kinds"}function z(e){return Array.isArray(e)?e:[e]}function q(e){return e==="from"?"fromFile":e}function J(e,s){const t=X(s),n=Q(t);if(/^-?\d+$/.test(t))return Number(t);if(t==="true")return!0;if(t==="false")return!1;if(e==="entity"||e==="entities"){const i=(n??F(t)).map(v);return e==="entity"&&i.length===1?i[0]:i}return e==="only"||e==="except"?(n??F(t)).flatMap(Y):n&&b(q(e))?n:b(q(e))&&t.includes(",")?F(t):t}function Q(e){if(!e.startsWith("[")||!e.endsWith("]"))return null;const s=e.slice(1,-1).trim();return s?F(s):[]}function F(e){const s=[];let t="",n=0,i=0;for(const o of e){if(o==="{"?n+=1:o==="}"&&n>0?n-=1:o==="["?i+=1:o==="]"&&i>0&&(i-=1),o===","&&n===0&&i===0){t.trim()&&s.push(t.trim()),t="";continue}t+=o}return t.trim()&&s.push(t.trim()),s}function X(e){return e==="sum"?"summary":e==="loc"?"locations":e}function v(e){const s=e.match(/^(.+)\.\{(.+)\}$/);if(s){const n=s[1],i=s[2];return!n||!i?e:{parent:n,entities:i.split(",").map(o=>o.trim()).filter(Boolean)}}const t=e.match(/^(.+)\.([^./{}]+)$/);if(t){const n=t[1],i=t[2];return!n||!i?e:{parent:n,entities:[i]}}return e}function Y(e){const s=e.match(/^(.+)\.\{(.+)\}$/);if(s){const t=s[1],n=s[2];if(t&&n)return n.split(",").map(i=>i.trim()).filter(Boolean).map(i=>`${t}.${i}`)}return[e]}function C(e,s){const t=s.map(Z),n={requests:t};return P(n,t,{payloadKey:"file",defaultValue:e.file,predicate:ee,marker:w}),P(n,t,{payloadKey:"scope",defaultValue:e.scope,predicate:te,marker:g}),P(n,t,{payloadKey:"target",defaultValue:e.target,predicate:ne,marker:A}),e.save&&(n.save=e.save),k(n,t),n}function Z(e){const s={...e};for(const t of[w,g,A])e[t]===!0&&h(s,t);return s}function P(e,s,t){if(t.defaultValue===void 0)return;const n=s.filter(t.predicate);if(n.some(i=>i[t.payloadKey]!==void 0)){e[t.payloadKey]=t.defaultValue;for(const i of n)i[t.marker]===!0&&i[t.payloadKey]===t.defaultValue&&delete i[t.payloadKey]}}function k(e,s){for(const t of s){const n=String(t.op??"");if((n==="file"||n==="exports"||n==="imports")&&typeof t.file!="string"&&typeof e.file!="string")throw l(0,`${n} requires file=... or @file.`);if((n==="members"||n==="code"||n==="deps")&&typeof t.file!="string"&&typeof t.fromFile!="string"&&typeof e.file!="string")throw l(0,`${n} requires file=..., from=..., or @file.`);if(n==="usages"&&typeof t.target!="string"&&typeof e.target!="string")throw l(0,"usages requires target=..., positional target, @target, or @file.");if(n==="duplicates"&&typeof t.scope!="string"&&!Array.isArray(t.scope)&&typeof e.scope!="string"&&!Array.isArray(e.scope))throw l(0,"duplicates requires scope=..., positional scope, or @scope.");if(n==="graph"&&typeof t.fromFile!="string"&&typeof t.scope!="string"&&!Array.isArray(t.scope)&&typeof e.scope!="string"&&!Array.isArray(e.scope))throw l(0,"graph requires scope=..., positional scope, @scope, or from=...");if(n==="tree"&&typeof t.scope!="string"&&typeof e.scope!="string")throw l(0,"tree requires scope=..., positional scope, or @scope.");if(n==="cycles"&&typeof t.scope!="string"&&!Array.isArray(t.scope)&&typeof t.file!="string"&&!Array.isArray(t.files)&&typeof e.scope!="string"&&!Array.isArray(e.scope))throw l(0,"cycles requires scope=..., files=[...], positional scope, or @scope.")}}function ee(e){return(e.op==="file"||e.op==="exports"||e.op==="imports"||e.op==="members"||e.op==="code"||e.op==="deps")&&!e.fromFile}function te(e){return(e.op==="duplicates"||e.op==="graph"||e.op==="tree"||e.op==="cycles")&&!e.fromFile}function ne(e){return e.op==="usages"}function ie(e,s,t){if(e==="rename"){const i={};for(const o of s){if(o.startsWith(">")&&o.length>1)throw l(t,"Use @save <name> for mutation payload saves.");const r=o.indexOf("->");if(r<=0||r===o.length-2)throw l(t,`Invalid rename pair: ${o}`);i[o.slice(0,r)]=o.slice(r+2)}return{op:"rename",renames:i}}if(s.some(i=>i.startsWith(">")&&i.length>1))throw l(t,"Use @save <name> for mutation payload saves.");const n=s[0];if(typeof n=="string"&&n.endsWith(":")&&n.length>1){const i=s.slice(1);if(i.length===0)throw l(t,"Move entities are required.");return{op:"move",entities:i,targetFile:n.slice(0,-1)}}throw l(t,"Invalid move syntax. Expected: move target.ts: entity entity")}function se(e,s,t){const{positional:n,fields:i}=S(e,t),o={...i},r=o.scope??n[0]??s.scope;if(r!==void 0&&(o.scope=r),Array.isArray(o.scope))throw l(t,"imports.normalize scope expects one file/dir; use multiple imports.normalize lines for multiple scopes.");if(typeof o.scope!="string"||o.scope.length===0)throw l(t,"imports.normalize requires scope=..., positional scope, or @scope.");if(n.length>1)throw l(t,"imports.normalize accepts one positional scope; use key=value fields for options.");return o}function re(e,s){const{positional:t,fields:n}=S(e,s),i=n.handle??n.from??t[0];if(typeof i!="string"||i.length===0)throw l(s,"view requires a result handle.");if(t.length>1)throw l(s,"view accepts one positional handle; use key=value fields for options.");const o={handle:i};for(const[r,a]of Object.entries(n))r==="handle"||r==="from"||(o[r]=a);return o}function oe(e,s){if(e.findIndex(o=>o.endsWith(":"))!==0)throw l(s,"Plan syntax is: plan target.ts: entity entity");const n=e[0].slice(0,-1),i=e.slice(1);if(!n||i.length===0)throw l(s,"Plan row requires target and at least one entity.");return{target:n,entities:i}}function E(e,s,t){if(!e)throw l(t,`${s} is required.`)}function l(e,s){const t=e>0?`DSL line ${e}: `:"DSL: ";return new Error(`${t}${s}`)}function D(e){return Object.fromEntries(Object.entries(e).filter(s=>s[1]!==void 0))}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.compileAibDsl=V;const L=new Set(["file","exports","members","code","deps","usages","duplicates","graph","tree","cycles","imports"]),R=new Set(["rename","move","plan","module"]),$=new Set(["imports.normalize"]),K=new Set(["view"]),w="__aibDslDefaultFile",g="__aibDslDefaultScope",A="__aibDslDefaultTarget";function V(e,r={}){if(r.tolerantInspect===!0)return j(e);const t={},n=[],i=[],o=[],s=[],a=[];let c=null;for(const u of N(e)){const[f,...p]=u.tokens;if(f){if(f.startsWith("@")){M(t,f,p,u.lineNumber);continue}if(L.has(f)){c=y(c,"inspect",u.lineNumber),n.push(U(f,p,t,u.lineNumber));continue}if(R.has(f)){c=y(c,"mutation",u.lineNumber),f==="plan"||f==="module"?o.push(oe(p,u.lineNumber)):i.push(ie(f,p,u.lineNumber));continue}if($.has(f)){c=y(c,"imports",u.lineNumber),s.push(re(p,t,u.lineNumber));continue}if(K.has(f)){c=y(c,"view",u.lineNumber),a.push(se(p,u.lineNumber));continue}throw l(u.lineNumber,`Unknown DSL operation: ${f}`)}}if(c==="inspect")return{command:"inspect",payload:C(t,n)};if(o.length>0&&i.length>0)throw l(0,"Cannot mix modulePlan rows with rename/move mutation rows.");if(o.length>0)return E(t.sourceFile,"@source",0),{command:"modulePlan",payload:D({sourceFile:t.sourceFile,modules:o,expectEmpty:t.expectEmpty===!0?!0:void 0,save:t.save})};if(i.length===1){E(t.sourceFile,"@source",0);const u=i[0];return u.op==="rename"?{command:"rename",payload:D({sourceFile:t.sourceFile,renames:u.renames,save:t.save})}:{command:"move.toFile",payload:D({sourceFile:t.sourceFile,targetFile:u.targetFile,entities:u.entities,save:t.save})}}if(i.length>1)return E(t.sourceFile,"@source",0),{command:"refactor.batch",payload:D({sourceFile:t.sourceFile,requests:i,save:t.save})};if(s.length>0)return{command:"imports.normalize",payload:s.length===1?s[0]:{requests:s}};if(a.length>0)return{command:"view",payload:a.length===1?a[0]:{views:a}};throw l(0,"DSL document has no operations.")}function j(e){const r={},t=[],n=[];let i=null;const o=e.split(/\r?\n/);for(let a=0;a<o.length;a+=1){const c=a+1,u=o[a]??"",f=_(u).trim();if(!f)continue;let p;try{p=O(f,c)}catch(d){n.push({line:c,message:I(d instanceof Error?d.message:String(d))});continue}const[m,...T]=p;if(m){if(m.startsWith("@")){M(r,m,T,c);continue}if(L.has(m)){i=y(i,"inspect",c);try{t.push(U(m,T,r,c))}catch(d){n.push({line:c,message:I(d instanceof Error?d.message:String(d))})}continue}if(R.has(m)||$.has(m))throw l(c,"Cannot mix inspect, mutation, and imports operations in one DSL document.");n.push({line:c,message:`Unknown DSL operation: ${m}`})}}if(t.length===0)throw n.length>0?l(n[0].line,n[0].message):l(0,"DSL document has no operations.");const s=C(r,t);return n.length>0&&(s.dslDiagnostics=n.map(a=>({line:a.line,message:a.message}))),{command:"inspect",payload:s,...n.length>0?{diagnostics:n}:{}}}function I(e){return e.replace(/^DSL(?: line \d+)?:\s*/,"")}function N(e){return e.split(/\r?\n/).flatMap((r,t)=>{const n=_(r).trim();return n?[{lineNumber:t+1,tokens:O(n,t+1)}]:[]})}function _(e){let r=null;for(let t=0;t<e.length;t+=1){const n=e[t];if((n==='"'||n==="'")&&e[t-1]!=="\\"&&(r=r===n?null:r??n),n==="#"&&r===null)return e.slice(0,t)}return e}function O(e,r){const t=[];let n="",i=null;for(let o=0;o<e.length;o+=1){const s=e[o];if(i){s===i&&e[o-1]!=="\\"?i=null:n+=s;continue}if(s==='"'||s==="'"){i=s;continue}if(/\s/.test(s)){n&&(t.push(n),n="");continue}n+=s}if(i)throw l(r,"Unclosed quote.");return n&&t.push(n),t}function M(e,r,t,n){const i=t.join(" ").trim();if(!i)throw l(n,`${r} requires a value.`);switch(r){case"@file":e.file=i;return;case"@source":{const{value:o,flags:s}=B(t,n,r);e.sourceFile=o,s.has("expectEmpty")&&(e.expectEmpty=!0);return}case"@scope":e.scope=i;return;case"@target":e.target=i;return;case"@save":e.save=i;return;default:throw l(n,`Unknown DSL default: ${r}`)}}function B(e,r,t){const n=new Set,i=[];for(const s of e){if(s.startsWith("+")&&s.length>1){n.add(s.slice(1));continue}i.push(s)}const o=i.join(" ").trim();if(!o)throw l(r,`${t} requires a value.`);return{value:o,flags:n}}function y(e,r,t){if(e&&e!==r)throw l(t,"Cannot mix inspect, mutation, and imports operations in one DSL document.");return r}function U(e,r,t,n){const{positional:i,fields:o}=S(r,n),s={op:e};if(Object.assign(s,o),e==="file"||e==="exports"||e==="imports"){const a=i[0]??o.file,c=a??t.file;return c&&(s.file=c,a||h(s,w)),s}if(e==="members"){const c=W(s,i,t).map(v);return c.length===1&&!o.entity&&!o.entities?s.entity=c[0]:c.length>0&&!o.entities&&(s.entities=c),s}if(e==="code"||e==="deps"){const c=W(s,i,t).map(v);return e==="deps"&&c.length===1&&!o.entities&&!o.entity?s.entity=c[0]:c.length>0&&!o.entities&&!o.entity&&(s.entities=c),s}if(e==="usages"){const a=o.target??i[0],c=a??t.target??t.file;c&&(s.target=c,a||h(s,A));const u=o.entity??o.entities,p=(c===i[0]?i.slice(1):i).map(v);return!u&&p.length===1?s.entity=p[0]:!u&&p.length>1&&(s.entities=p),s}if(e==="duplicates"){const a=o.scope??i[0],c=a??t.scope;return c&&(s.scope=c,a||h(s,g)),s}if(e==="tree"){const a=o.scope??i[0],c=a??t.scope;return c&&(s.scope=c,a||h(s,g)),s}if(e==="cycles"){const a=o.scope??i[0],c=a??t.scope;return c&&(s.scope=c,a||h(s,g)),s}if(e==="graph"){const a=o.scope??i[0],c=a??t.scope;return c&&!s.fromFile&&(s.scope=c,a||h(s,g)),s}return s}function G(e,r){!e.file&&!e.fromFile&&r.file&&(e.file=r.file,h(e,w))}function W(e,r,t){return!e.file&&!e.fromFile&&r.length>0&&H(r[0])?(e.file=r[0],r.slice(1)):(G(e,t),r)}function H(e){return e.includes("/")||e.includes("\\")||/^@[^/\\]+[/\\]/.test(e)||/\.(?:[cm]?[jt]sx?|d\.ts)$/i.test(e)}function h(e,r){Object.defineProperty(e,r,{value:!0,enumerable:!1})}function S(e,r){const t=[],n={};for(const i of e){if(i.startsWith("+")&&i.length>1){x(n,i.slice(1),!0);continue}if(i.startsWith("-")&&i.length>1){x(n,i.slice(1),!1);continue}if(i.startsWith(">")&&i.length>1){x(n,"save",i.slice(1));continue}const o=i.indexOf("=");if(o>0){const s=i.slice(0,o),a=i.slice(o+1);x(n,q(s),J(s,a));continue}if(i==="->")throw l(r,"Unexpected move separator in inspect request.");t.push(i)}return{positional:t,fields:n}}function x(e,r,t){const n=e[r];if(n===void 0){e[r]=t;return}if(b(r)){e[r]=[...z(n),...z(t)];return}e[r]=t}function b(e){return e==="focus"||e==="scope"||e==="scopes"||e==="file"||e==="files"||e==="exclude"||e==="excludes"||e==="pathExclude"||e==="pathExcludes"||e==="excludePath"||e==="excludePaths"||e==="entities"||e==="only"||e==="except"||e==="kinds"}function z(e){return Array.isArray(e)?e:[e]}function q(e){return e==="from"?"fromFile":e==="no-default-exclude"?"noDefaultExclude":e==="no-config-exclude"?"noConfigExclude":e}function J(e,r){const t=X(r),n=Q(t);if(/^-?\d+$/.test(t))return Number(t);if(t==="true")return!0;if(t==="false")return!1;if(e==="entity"||e==="entities"){const i=(n??F(t)).map(v);return e==="entity"&&i.length===1?i[0]:i}return e==="only"||e==="except"?(n??F(t)).flatMap(Y):n&&b(q(e))?n:b(q(e))&&t.includes(",")?F(t):t}function Q(e){if(!e.startsWith("[")||!e.endsWith("]"))return null;const r=e.slice(1,-1).trim();return r?F(r):[]}function F(e){const r=[];let t="",n=0,i=0;for(const o of e){if(o==="{"?n+=1:o==="}"&&n>0?n-=1:o==="["?i+=1:o==="]"&&i>0&&(i-=1),o===","&&n===0&&i===0){t.trim()&&r.push(t.trim()),t="";continue}t+=o}return t.trim()&&r.push(t.trim()),r}function X(e){return e==="sum"?"summary":e==="loc"?"locations":e}function v(e){const r=e.match(/^(.+)\.\{(.+)\}$/);if(r){const n=r[1],i=r[2];return!n||!i?e:{parent:n,entities:i.split(",").map(o=>o.trim()).filter(Boolean)}}const t=e.match(/^(.+)\.([^./{}]+)$/);if(t){const n=t[1],i=t[2];return!n||!i?e:{parent:n,entities:[i]}}return e}function Y(e){const r=e.match(/^(.+)\.\{(.+)\}$/);if(r){const t=r[1],n=r[2];if(t&&n)return n.split(",").map(i=>i.trim()).filter(Boolean).map(i=>`${t}.${i}`)}return[e]}function C(e,r){const t=r.map(Z),n={requests:t};return P(n,t,{payloadKey:"file",defaultValue:e.file,predicate:ee,marker:w}),P(n,t,{payloadKey:"scope",defaultValue:e.scope,predicate:te,marker:g}),P(n,t,{payloadKey:"target",defaultValue:e.target,predicate:ne,marker:A}),e.save&&(n.save=e.save),k(n,t),n}function Z(e){const r={...e};for(const t of[w,g,A])e[t]===!0&&h(r,t);return r}function P(e,r,t){if(t.defaultValue===void 0)return;const n=r.filter(t.predicate);if(n.some(i=>i[t.payloadKey]!==void 0)){e[t.payloadKey]=t.defaultValue;for(const i of n)i[t.marker]===!0&&i[t.payloadKey]===t.defaultValue&&delete i[t.payloadKey]}}function k(e,r){for(const t of r){const n=String(t.op??"");if((n==="file"||n==="exports"||n==="imports")&&typeof t.file!="string"&&typeof e.file!="string")throw l(0,`${n} requires file=... or @file.`);if((n==="members"||n==="code"||n==="deps")&&typeof t.file!="string"&&typeof t.fromFile!="string"&&typeof e.file!="string")throw l(0,`${n} requires file=..., from=..., or @file.`);if(n==="usages"&&typeof t.target!="string"&&typeof e.target!="string")throw l(0,"usages requires target=..., positional target, @target, or @file.");if(n==="duplicates"&&typeof t.scope!="string"&&!Array.isArray(t.scope)&&typeof e.scope!="string"&&!Array.isArray(e.scope))throw l(0,"duplicates requires scope=..., positional scope, or @scope.");if(n==="graph"&&typeof t.fromFile!="string"&&typeof t.scope!="string"&&!Array.isArray(t.scope)&&typeof e.scope!="string"&&!Array.isArray(e.scope))throw l(0,"graph requires scope=..., positional scope, @scope, or from=...");if(n==="tree"&&typeof t.scope!="string"&&typeof e.scope!="string")throw l(0,"tree requires scope=..., positional scope, or @scope.");if(n==="cycles"&&typeof t.scope!="string"&&!Array.isArray(t.scope)&&typeof t.file!="string"&&!Array.isArray(t.files)&&typeof e.scope!="string"&&!Array.isArray(e.scope))throw l(0,"cycles requires scope=..., files=[...], positional scope, or @scope.")}}function ee(e){return(e.op==="file"||e.op==="exports"||e.op==="imports"||e.op==="members"||e.op==="code"||e.op==="deps")&&!e.fromFile}function te(e){return(e.op==="duplicates"||e.op==="graph"||e.op==="tree"||e.op==="cycles")&&!e.fromFile}function ne(e){return e.op==="usages"}function ie(e,r,t){if(e==="rename"){const i={};for(const o of r){if(o.startsWith(">")&&o.length>1)throw l(t,"Use @save <name> for mutation payload saves.");const s=o.indexOf("->");if(s<=0||s===o.length-2)throw l(t,`Invalid rename pair: ${o}`);i[o.slice(0,s)]=o.slice(s+2)}return{op:"rename",renames:i}}if(r.some(i=>i.startsWith(">")&&i.length>1))throw l(t,"Use @save <name> for mutation payload saves.");const n=r[0];if(typeof n=="string"&&n.endsWith(":")&&n.length>1){const i=r.slice(1);if(i.length===0)throw l(t,"Move entities are required.");return{op:"move",entities:i,targetFile:n.slice(0,-1)}}throw l(t,"Invalid move syntax. Expected: move target.ts: entity entity")}function re(e,r,t){const{positional:n,fields:i}=S(e,t),o={...i},s=o.scope??n[0]??r.scope;if(s!==void 0&&(o.scope=s),Array.isArray(o.scope))throw l(t,"imports.normalize scope expects one file/dir; use multiple imports.normalize lines for multiple scopes.");if(typeof o.scope!="string"||o.scope.length===0)throw l(t,"imports.normalize requires scope=..., positional scope, or @scope.");if(n.length>1)throw l(t,"imports.normalize accepts one positional scope; use key=value fields for options.");return o}function se(e,r){const{positional:t,fields:n}=S(e,r),i=n.handle??n.from??t[0];if(typeof i!="string"||i.length===0)throw l(r,"view requires a result handle.");if(t.length>1)throw l(r,"view accepts one positional handle; use key=value fields for options.");const o={handle:i};for(const[s,a]of Object.entries(n))s==="handle"||s==="from"||(o[s]=a);return o}function oe(e,r){if(e.findIndex(o=>o.endsWith(":"))!==0)throw l(r,"Plan syntax is: plan target.ts: entity entity");const n=e[0].slice(0,-1),i=e.slice(1);if(!n||i.length===0)throw l(r,"Plan row requires target and at least one entity.");return{target:n,entities:i}}function E(e,r,t){if(!e)throw l(t,`${r} is required.`)}function l(e,r){const t=e>0?`DSL line ${e}: `:"DSL: ";return new Error(`${t}${r}`)}function D(e){return Object.fromEntries(Object.entries(e).filter(r=>r[1]!==void 0))}
|
package/dist/help/bootstrap.md
CHANGED
|
@@ -177,10 +177,19 @@ shortestAlias rewrite to the shortest valid alias specifier
|
|
|
177
177
|
preferAlias:
|
|
178
178
|
@shared/* prefer one alias pattern when several aliases can resolve the same file
|
|
179
179
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
AIB has four config exclude fields:
|
|
181
|
+
inspect.graph.exclude
|
|
182
|
+
inspect.tree.files.exclude
|
|
183
|
+
inspect.tree.onlyDirs.exclude
|
|
184
|
+
sync.tsconfig.exclude
|
|
185
|
+
|
|
186
|
+
For all of them, node_modules, .git, dist, build, out, and .tmp are skipped by default.
|
|
187
|
+
|
|
188
|
+
Use config excludes for generated files, backups, local copies, nested workspaces, seed projects, or other repository-specific noise.
|
|
189
|
+
|
|
190
|
+
Graph excludes affect graph counts, hubs, entrypoints, leaves, edges, imports, importedBy, and saved graph files.
|
|
191
|
+
Tree excludes affect directory/file discovery output.
|
|
192
|
+
Tsconfig excludes affect which TypeScript configs AIB syncs and watches.
|
|
184
193
|
|
|
185
194
|
Leave feedback while working.
|
|
186
195
|
|
|
@@ -640,24 +649,25 @@ Inspect Tree
|
|
|
640
649
|
Use tree to list a compact directory layout.
|
|
641
650
|
It is useful before focused inspect when you know the area but not the exact file.
|
|
642
651
|
|
|
643
|
-
node_modules, .git, dist, build, out, and .tmp are skipped by default.
|
|
644
|
-
|
|
645
652
|
Controls:
|
|
646
|
-
scope, depth, minDepth, limit,
|
|
653
|
+
scope, depth, minDepth, limit, only, exclude, onlyDirs, ned, nec
|
|
647
654
|
|
|
648
655
|
Specific:
|
|
649
656
|
depth max nesting depth; depth=N
|
|
650
657
|
minDepth hide shallower paths; minDepth=N
|
|
651
658
|
onlyDirs show directories only; +onlyDirs
|
|
652
|
-
|
|
653
|
-
|
|
659
|
+
only keep only matching files/dirs; only=[...]
|
|
660
|
+
exclude skip matching files/dirs; exclude=[...]
|
|
661
|
+
ned no-default-exclude; show paths hidden by built-in excludes; +ned
|
|
662
|
+
nec no-config-exclude; ignore inspect.tree.*.exclude from aib.json; +nec
|
|
654
663
|
|
|
655
664
|
Run:
|
|
656
665
|
aib inspect --stdin
|
|
657
666
|
|
|
658
667
|
Input:
|
|
659
|
-
tree src depth=4 +onlyDirs limit=200
|
|
660
|
-
tree @svc depth=3
|
|
668
|
+
tree src depth=4 +onlyDirs limit=200 +ned +nec
|
|
669
|
+
tree @svc depth=3 only=["**/*.ts"] exclude=["**/*.test.ts","**/* copy.ts"]
|
|
670
|
+
tree src depth=3 only=["src/services/**"] limit=80
|
|
661
671
|
|
|
662
672
|
Inspect Duplicates
|
|
663
673
|
|