@automaton-labs/aib 0.0.3 → 0.0.5
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/help-command.js +7 -3
- 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/session-workspace.js +4 -4
- 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 +108 -94
- package/dist/help/docs/config-setup.aliases.md +56 -0
- package/dist/help/docs/config-setup.excludes.md +45 -0
- package/dist/help/docs/config-setup.import-normalize.md +86 -0
- package/dist/help/docs/config-setup.import-rules.md +96 -0
- package/dist/help/docs/config-setup.tsconfigs.md +33 -0
- package/dist/help/docs/first-setup.md +292 -0
- package/dist/help/docs/help-protocol.md +26 -0
- package/dist/help/docs/inspect.cycles.md +38 -0
- package/dist/help/docs/inspect.md +1 -0
- package/dist/help/docs/inspect.tree.md +8 -6
- package/dist/help/docs/modulePlan.md +3 -0
- package/dist/help/docs/move.md +3 -0
- package/dist/help/docs/mutation.md +3 -0
- package/dist/help/docs/patterns.md +16 -118
- package/dist/help/docs/qr.md +6 -2
- package/dist/help/docs/quick-map.md +30 -0
- package/dist/help/docs/reveal.md +30 -0
- package/dist/help/dsl/bootstrap.md +108 -94
- package/dist/help/dsl/docs/config-setup.aliases.md +56 -0
- package/dist/help/dsl/docs/config-setup.excludes.md +45 -0
- package/dist/help/dsl/docs/config-setup.import-normalize.md +86 -0
- package/dist/help/dsl/docs/config-setup.import-rules.md +96 -0
- package/dist/help/dsl/docs/config-setup.tsconfigs.md +33 -0
- package/dist/help/dsl/docs/first-setup.md +292 -0
- package/dist/help/dsl/docs/help-protocol.md +26 -0
- package/dist/help/dsl/docs/inspect.cycles.md +38 -0
- package/dist/help/dsl/docs/inspect.md +1 -0
- package/dist/help/dsl/docs/inspect.tree.md +8 -6
- package/dist/help/dsl/docs/modulePlan.md +3 -0
- package/dist/help/dsl/docs/move.md +3 -0
- package/dist/help/dsl/docs/mutation.md +3 -0
- package/dist/help/dsl/docs/patterns.md +16 -118
- package/dist/help/dsl/docs/qr.md +6 -2
- package/dist/help/dsl/docs/quick-map.md +30 -0
- package/dist/help/dsl/docs/reveal.md +30 -0
- package/dist/help/dsl/full.md +108 -94
- package/dist/help/dsl/topics/config-setup.aliases.md +54 -0
- package/dist/help/dsl/topics/config-setup.excludes.md +43 -0
- package/dist/help/dsl/topics/config-setup.import-normalize.md +84 -0
- package/dist/help/dsl/topics/config-setup.import-rules.md +94 -0
- package/dist/help/dsl/topics/config-setup.tsconfigs.md +31 -0
- package/dist/help/dsl/topics/first-setup.md +290 -0
- package/dist/help/dsl/topics/help-protocol.md +24 -0
- package/dist/help/dsl/topics/inspect.cycles.md +36 -0
- package/dist/help/dsl/topics/inspect.md +1 -0
- package/dist/help/dsl/topics/inspect.tree.md +8 -6
- package/dist/help/dsl/topics/modulePlan.md +3 -0
- package/dist/help/dsl/topics/move.md +3 -0
- package/dist/help/dsl/topics/mutation.md +3 -0
- package/dist/help/dsl/topics/patterns.md +16 -118
- package/dist/help/dsl/topics/qr.md +6 -2
- package/dist/help/dsl/topics/quick-map.md +28 -0
- package/dist/help/dsl/topics/reveal.md +28 -0
- package/dist/help/full.md +108 -94
- package/dist/help/help-meta.json +57 -17
- package/dist/help/index.md +60 -0
- package/dist/help/json/bootstrap.md +108 -94
- package/dist/help/json/docs/config-setup.aliases.md +56 -0
- package/dist/help/json/docs/config-setup.excludes.md +45 -0
- package/dist/help/json/docs/config-setup.import-normalize.md +86 -0
- package/dist/help/json/docs/config-setup.import-rules.md +96 -0
- package/dist/help/json/docs/config-setup.tsconfigs.md +33 -0
- package/dist/help/json/docs/first-setup.md +292 -0
- package/dist/help/json/docs/help-protocol.md +26 -0
- package/dist/help/json/docs/inspect.cycles.md +38 -0
- package/dist/help/json/docs/inspect.md +1 -0
- package/dist/help/json/docs/inspect.tree.md +8 -6
- package/dist/help/json/docs/modulePlan.md +3 -0
- package/dist/help/json/docs/move.md +3 -0
- package/dist/help/json/docs/mutation.md +3 -0
- package/dist/help/json/docs/patterns.md +16 -118
- package/dist/help/json/docs/qr.md +6 -2
- package/dist/help/json/docs/quick-map.md +30 -0
- package/dist/help/json/docs/reveal.md +30 -0
- package/dist/help/json/full.md +108 -94
- package/dist/help/json/topics/config-setup.aliases.md +54 -0
- package/dist/help/json/topics/config-setup.excludes.md +43 -0
- package/dist/help/json/topics/config-setup.import-normalize.md +84 -0
- package/dist/help/json/topics/config-setup.import-rules.md +94 -0
- package/dist/help/json/topics/config-setup.tsconfigs.md +31 -0
- package/dist/help/json/topics/first-setup.md +290 -0
- package/dist/help/json/topics/help-protocol.md +24 -0
- package/dist/help/json/topics/inspect.cycles.md +36 -0
- package/dist/help/json/topics/inspect.md +1 -0
- package/dist/help/json/topics/inspect.tree.md +8 -6
- package/dist/help/json/topics/modulePlan.md +3 -0
- package/dist/help/json/topics/move.md +3 -0
- package/dist/help/json/topics/mutation.md +3 -0
- package/dist/help/json/topics/patterns.md +16 -118
- package/dist/help/json/topics/qr.md +6 -2
- package/dist/help/json/topics/quick-map.md +28 -0
- package/dist/help/json/topics/reveal.md +28 -0
- package/dist/help/topics/config-setup.aliases.md +54 -0
- package/dist/help/topics/config-setup.excludes.md +43 -0
- package/dist/help/topics/config-setup.import-normalize.md +84 -0
- package/dist/help/topics/config-setup.import-rules.md +94 -0
- package/dist/help/topics/config-setup.tsconfigs.md +31 -0
- package/dist/help/topics/first-setup.md +290 -0
- package/dist/help/topics/help-protocol.md +24 -0
- package/dist/help/topics/inspect.cycles.md +36 -0
- package/dist/help/topics/inspect.md +1 -0
- package/dist/help/topics/inspect.tree.md +8 -6
- package/dist/help/topics/modulePlan.md +3 -0
- package/dist/help/topics/move.md +3 -0
- package/dist/help/topics/mutation.md +3 -0
- package/dist/help/topics/patterns.md +16 -118
- package/dist/help/topics/qr.md +6 -2
- package/dist/help/topics/quick-map.md +28 -0
- package/dist/help/topics/reveal.md +28 -0
- package/dist/runtime/run-command.js +1 -1
- package/dist/session/server.js +3 -3
- package/dist/shared/diagnostic-catalog.js +1 -1
- package/dist/shared/errors.js +6 -5
- 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/provision-runtime.cjs +99 -41
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,7 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
|
|
3
|
-
`)
|
|
1
|
+
"use strict";var w=exports&&exports.__createBinding||(Object.create?(function(e,t,n,i){i===void 0&&(i=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,i,s)}):(function(e,t,n,i){i===void 0&&(i=n),e[i]=t[n]})),v=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 i=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[i.length]=s);return i},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var i=e(t),s=0;s<i.length;s++)i[s]!=="default"&&w(n,t,i[s]);return v(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runHelpCommand=_,exports.resolveHelpRoot=d;const c=m(require("node:fs")),o=m(require("node:path")),p=require("../content/content-bundle"),u=require("../shared/agent-text"),j=require("../shared/errors"),h=new Map([["inspect file","inspect.file"],["inspect imports","inspect.imports"],["inspect exports","inspect.exports"],["inspect members","inspect.members"],["inspect code","inspect.code"],["inspect deps","inspect.deps"],["inspect dependencies","inspect.deps"],["inspect usages","inspect.usages"],["inspect usage","inspect.usages"],["inspect graph","inspect.graph"],["inspect tree","inspect.tree"],["inspect duplicates","inspect.duplicates"],["inspect duplicate","inspect.duplicates"],["inspect cycles","inspect.cycles"],["inspect cycle","inspect.cycles"],["refactor batch","refactor.batch"],["module plan","modulePlan"],["moduleplan","modulePlan"]]),g=["help-protocol","quick-map","help-format","basics","dsl","patterns","config-setup.aliases","config-setup.excludes","config-setup.import-normalize","config-setup.import-rules","config-setup.tsconfigs","session","prefs","selectors","inspect","inspect.file","inspect.imports","inspect.exports","inspect.members","inspect.code","inspect.deps","inspect.usages","inspect.graph","inspect.tree","inspect.duplicates","inspect.cycles","mutation","imports.normalize","rename","move","modulePlan","refactor.batch","view","qr","reveal"];function _(e){if(O(e))return C();const t=$(e);if(t.length===0)return f();const n=d(),i=H(t,n);if(i.targets.length===0&&i.unknown.length===0)return f();const s=i.targets.map(r=>{const a=o.join(n.dir,r.file);return c.existsSync(a)?{target:r,text:c.readFileSync(a,"utf8").trim()}:null}).filter(r=>r!==null);if(s.length===1&&i.unknown.length===0){const r=s[0];return r?(0,u.attachAgentText)({operation:"help",topic:r.target.id,source:n.source},r.text):f()}const l=[...s.map(r=>`// ${r.target.id}
|
|
2
|
+
${r.text}`),...i.unknown.length>0?[["Unknown help topics:",...i.unknown].join(`
|
|
3
|
+
`)]:[]].join(`
|
|
4
|
+
|
|
5
|
+
`);if(i.unknown.length>0)throw new j.CliError("HELP_TOPIC_NOT_FOUND",l,{topics:s.map(r=>r.target.id),unknown:i.unknown,helpRoot:n.dir,available:g});return(0,u.attachAgentText)({operation:"help",topics:s.map(r=>r.target.id),source:n.source},l)}function O(e){const t=e.filter(n=>n!=="help");return t.length===1&&t[0]==="status"}function f(){const e=["Run as: aib help <topic...>","","Start here if this is your first AIB pass:"," bootstrap","","Always after context compaction:"," aib help help-protocol quick-map"," aib config aliases","","Help conventions:"," help-format","","Refresh workflow model:"," basics patterns","","Core focused topics:"," session"," prefs"," selectors"," dsl"," inspect"," mutation","","Feature topics:"," inspect.file"," inspect.imports"," inspect.exports"," inspect.members"," inspect.code"," inspect.deps"," inspect.usages"," inspect.graph"," inspect.tree"," inspect.duplicates"," inspect.cycles"," rename"," move"," modulePlan"," refactor.batch"," imports.normalize"," view"," qr"," reveal"].join(`
|
|
6
|
+
`);return(0,u.attachAgentText)({operation:"help",topic:"index",available:g},e)}function $(e){return e.filter(t=>t!=="help")}function H(e,t){if(e.length===0)return{targets:[],unknown:[]};if(e.includes("--full"))return{targets:[{id:"full",input:"--full",file:"full.md"}],unknown:[]};const n=S(e,t);if(n)return{targets:[n],unknown:[]};const i=[],s=[];for(const l of e.filter(r=>!r.startsWith("--"))){const r=l.trim(),a=x(r,t);if(a){i.push(a);continue}s.push(r)}return{targets:i,unknown:s}}function S(e,t){const n=e.join(" ").trim();if(!n)return null;if(n==="bootstrap")return{id:"bootstrap",input:n,file:"bootstrap.md"};const i=h.get(n.toLowerCase());if(i)return{id:i,input:n,file:o.join("topics",`${i}.md`)};const s=n.replace(/\s+/g,".");return b(t,s)?{id:s,input:n,file:o.join("topics",`${s}.md`)}:null}function x(e,t){if(!e)return null;if(e==="bootstrap")return{id:"bootstrap",input:e,file:"bootstrap.md"};if(e==="full")return{id:"full",input:e,file:"full.md"};const n=h.get(e.toLowerCase());if(n)return{id:n,input:e,file:o.join("topics",`${n}.md`)};if(b(t,e))return{id:e,input:e,file:o.join("topics",`${e}.md`)};const i=T(t,e);return i?{id:i,input:e,file:o.join("topics",`${i}.md`)}:null}function C(){const e=d(),t=k(e.dir),n=(0,p.collectContentCandidates)(),i=t&&y(t.topics)?Object.keys(t.topics).length:P(e.dir),s=typeof t?.contentHash=="string"?t.contentHash:void 0,l=["aib help status","",`source: ${e.source}`,`path: ${e.dir}`,`assets: ${(0,p.directoryHasHelp)(e.dir)?"ok":"missing"}`,`metadata: ${t?"ok":"missing help-meta.json"}`,...typeof t?.helpVersion=="string"?[`version: ${t.helpVersion}`]:[],...typeof t?.generatedAt=="string"?[`generatedAt: ${t.generatedAt}`]:[],...typeof t?.sourceCommit=="string"?[`sourceCommit: ${t.sourceCommit}`]:[],...s?[`contentHash: ${q(s)}`]:[],`topics: ${i}`,"","checked:",...n.map(r=>{const a=r.valid?"ok":`skip (${r.reason??"invalid"})`;return`${r.source}: ${a} ${r.dir}`})].join(`
|
|
7
|
+
`);return(0,u.attachAgentText)({operation:"help.status",source:e.source,path:e.dir,assetsOk:(0,p.directoryHasHelp)(e.dir),metadataOk:t!==null,topicCount:i,meta:t??null,candidates:n},l)}function d(){return(0,p.resolveContentRoot)()}function k(e){const t=o.join(e,"help-meta.json");if(!c.existsSync(t))return null;try{const n=JSON.parse(c.readFileSync(t,"utf8"));return y(n)?n:null}catch{return null}}function P(e){const t=o.join(e,"topics");return c.existsSync(t)?c.readdirSync(t).filter(n=>n.endsWith(".md")).length:0}function b(e,t){return c.existsSync(o.join(e.dir,"topics",`${t}.md`))}function T(e,t){const n=A(e.dir),i=t.toLowerCase(),s=n.filter(l=>{const r=l.toLowerCase();return r.endsWith(`.${i}`)||r===i});return s.length===1?s[0]??null:null}function A(e){const t=o.join(e,"topics");return c.existsSync(t)?c.readdirSync(t).filter(n=>n.endsWith(".md")).map(n=>n.replace(/\.md$/,"")).sort():[]}function q(e){return e.replace(/^sha256:/,"sha256:").slice(0,19)}function y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
"use strict";var De=exports&&exports.__createBinding||(Object.create?(function(e,t,n,s){s===void 0&&(s=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,s,i)}):(function(e,t,n,s){s===void 0&&(s=n),e[s]=t[n]})),$e=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),ie=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var s=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(s[s.length]=i);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var s=e(t),i=0;i<s.length;i++)s[i]!=="default"&&De(n,t,s[i]);return $e(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isSessionHandle=M,exports.runWithSessionOverride=Ue,exports.runSessionWorkspaceCommand=Fe,exports.resolveSessionFileArgument=B,exports.saveSessionOutputJson=qe,exports.saveSessionOutputText=et,exports.saveSessionResultJson=tt,exports.saveSessionResultViewJson=nt,exports.readSessionResultViewJson=st,exports.readSessionResultJson=it,exports.captureSessionInputJson=rt,exports.captureSessionInput=ae,exports.sessionWorkspaceExists=ot,exports.useSessionGuidance=ue,exports.readSessionBooleanPref=at,exports.readSessionNumberPref=ut,exports.readSessionStringPref=ct,exports.readEffectiveSessionPathAliases=lt,exports.readSessionPathAliasOverrides=ft,exports.tryResolveCurrentSessionId=Ut;const l=ie(require("node:fs")),c=ie(require("node:path")),xe=require("node:async_hooks"),E=require("../config/env-vars"),N=require("../config/workspace-root"),b=require("../config/path-aliases"),m=require("../shared/agent-text"),u=require("../shared/errors"),je=c.join(".tmp","aib"),U="sessionDir",Ce="session.json",we="active.json",Re="aib:",Le="s_",Pe="last",Te="_last.json",F=new xe.AsyncLocalStorage,ke=["graph","inspect","code","slice","members","exports","deps","usages","duplicates","execution","rename","move","refactor","modulePlan","imports"],We=["inspect","graph","rename","move","refactor","modulePlan","imports","generic"],O={"guidance.nextLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"diagnostics.hintLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"inspect.code.show":{type:"boolean",default:!0,hidden:!0},"inspect.code.maxNonEmptyLines":{type:"number",default:120,min:1,max:1e4},"inspect.code.meta":{type:"boolean",default:!0,hidden:!0},"inspect.members.maxItems":{type:"number",default:20,min:1,max:1e3},"inspect.members.all":{type:"boolean",default:!1,hidden:!0},"inspect.exports.ranges":{type:"boolean",default:!1,hidden:!0},"inspect.exports.resolveStar":{type:"boolean",default:!1,hidden:!0},"inspect.graph.hubs":{type:"boolean",default:!0},"inspect.graph.entrypoints":{type:"boolean",default:!0},"inspect.graph.leaves":{type:"boolean",default:!0},"inspect.graph.edges":{type:"boolean",default:!0},"inspect.graph.symbols":{type:"boolean",default:!1,hidden:!0},"inspect.graph.symbolUsage":{type:"boolean",default:!1},"inspect.usages.detail":{type:"string",default:"locations",values:["summary","locations","code"],hidden:!0},"inspect.usages.maxLocations":{type:"number",default:12,min:1,max:1e4},"inspect.usages.maxCodeBlocks":{type:"number",default:8,min:1,max:1e4},"inspect.usages.excludeTarget":{type:"boolean",default:!1,hidden:!0}};function M(e){return e.startsWith(Re)}function Ue(e,t){return e?F.run(e,t):t()}function Fe(e,t,n){const s=t[0]??"status",i=(0,N.resolveWorkspaceRoot)(e);if(!i){if(s==="status")return(0,m.attachAgentText)({initialized:!1,active:null,source:"none",available:[],next:"Run aib
|
|
1
|
+
"use strict";var De=exports&&exports.__createBinding||(Object.create?(function(e,t,n,s){s===void 0&&(s=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,s,i)}):(function(e,t,n,s){s===void 0&&(s=n),e[s]=t[n]})),$e=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),ie=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var s=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(s[s.length]=i);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var s=e(t),i=0;i<s.length;i++)s[i]!=="default"&&De(n,t,s[i]);return $e(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.isSessionHandle=M,exports.runWithSessionOverride=Ue,exports.runSessionWorkspaceCommand=Fe,exports.resolveSessionFileArgument=B,exports.saveSessionOutputJson=qe,exports.saveSessionOutputText=et,exports.saveSessionResultJson=tt,exports.saveSessionResultViewJson=nt,exports.readSessionResultViewJson=st,exports.readSessionResultJson=it,exports.captureSessionInputJson=rt,exports.captureSessionInput=ae,exports.sessionWorkspaceExists=ot,exports.useSessionGuidance=ue,exports.readSessionBooleanPref=at,exports.readSessionNumberPref=ut,exports.readSessionStringPref=ct,exports.readEffectiveSessionPathAliases=lt,exports.readSessionPathAliasOverrides=ft,exports.tryResolveCurrentSessionId=Ut;const l=ie(require("node:fs")),c=ie(require("node:path")),xe=require("node:async_hooks"),E=require("../config/env-vars"),N=require("../config/workspace-root"),b=require("../config/path-aliases"),m=require("../shared/agent-text"),u=require("../shared/errors"),je=c.join(".tmp","aib"),U="sessionDir",Ce="session.json",we="active.json",Re="aib:",Le="s_",Pe="last",Te="_last.json",F=new xe.AsyncLocalStorage,ke=["graph","inspect","code","slice","members","exports","deps","usages","duplicates","execution","rename","move","refactor","modulePlan","imports"],We=["inspect","graph","rename","move","refactor","modulePlan","imports","generic"],O={"guidance.nextLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"diagnostics.hintLimit":{type:"number",default:2,min:0,max:100,hidden:!0},"inspect.code.show":{type:"boolean",default:!0,hidden:!0},"inspect.code.maxNonEmptyLines":{type:"number",default:120,min:1,max:1e4},"inspect.code.meta":{type:"boolean",default:!0,hidden:!0},"inspect.members.maxItems":{type:"number",default:20,min:1,max:1e3},"inspect.members.all":{type:"boolean",default:!1,hidden:!0},"inspect.exports.ranges":{type:"boolean",default:!1,hidden:!0},"inspect.exports.resolveStar":{type:"boolean",default:!1,hidden:!0},"inspect.graph.hubs":{type:"boolean",default:!0},"inspect.graph.entrypoints":{type:"boolean",default:!0},"inspect.graph.leaves":{type:"boolean",default:!0},"inspect.graph.edges":{type:"boolean",default:!0},"inspect.graph.symbols":{type:"boolean",default:!1,hidden:!0},"inspect.graph.symbolUsage":{type:"boolean",default:!1},"inspect.usages.detail":{type:"string",default:"locations",values:["summary","locations","code"],hidden:!0},"inspect.usages.maxLocations":{type:"number",default:12,min:1,max:1e4},"inspect.usages.maxCodeBlocks":{type:"number",default:8,min:1,max:1e4},"inspect.usages.excludeTarget":{type:"boolean",default:!1,hidden:!0}};function M(e){return e.startsWith(Re)}function Ue(e,t){return e?F.run(e,t):t()}function Fe(e,t,n){const s=t[0]??"status",i=(0,N.resolveWorkspaceRoot)(e);if(!i){if(s==="status")return(0,m.attachAgentText)({initialized:!1,active:null,source:"none",available:[],next:"Run aib help first-setup"},["session not ready","","No aib.json was found.","","If you are a user:","ask your agent to set up AIB for this repo:","aib help first-setup","","If you are an agent:","run:","aib help first-setup","","Then follow the setup from the intended repository root."].join(`
|
|
2
2
|
`));(0,N.resolveRequiredWorkspaceRoot)(e)}const r=i?.root??e;if(Rt(r),s==="init")return dt(r,t.slice(1));if(s==="status")return Dt(r);if(s==="list")return St(r);if(s==="use")return ht(r,t.slice(1));if(s==="where")return mt(r,t.slice(1));if(s==="read")return It(r,t.slice(1),n);if(s==="write")return Je(r,t.slice(1),n);if(s==="prefs")return Be(r,t.slice(1),n);if(s==="aliases")return Me(r,t.slice(1),n);if(s==="clear")return Ct(r);throw new u.CliError("UNKNOWN_SESSION_WORKSPACE_COMMAND",`Unknown session workspace command: ${s}`)}function Me(e,t,n){const s=t[0]??"get";if(s==="get"){const i=A(e),r=(0,b.readConfigPathAliases)(e),o=(0,b.normalizePathAliasMap)(i.pathAliases??{},"session path aliases"),a={aliases:(0,b.effectivePathAliases)(e,o),config:r,session:o};return(0,m.attachAgentText)(a,V(a))}if(s==="set"){const i=A(e),r=t.includes("--stdin")?Ve(n):ze(t.slice(1)),o=(0,b.normalizePathAliasMap)(i.pathAliases??{},"session path aliases"),a={};for(const[d,p]of Object.entries(r)){const S=(0,b.normalizePathAliasName)(d,"session path aliases");if(typeof p!="string"||p.trim()==="")throw new u.CliError("INVALID_PATH_ALIAS_TARGET",`session path alias ${d} must be a non-empty path string.`);o[S]=p.trim().replace(/\\/g,"/"),a[S]=o[S]}i.pathAliases=o,g(e,i);const f={updated:a,aliases:(0,b.effectivePathAliases)(e,o)};return(0,m.attachAgentText)(f,V(f))}if(s==="clear"){const i=A(e),r=t.slice(1).filter(d=>!d.startsWith("--")),o=(0,b.normalizePathAliasMap)(i.pathAliases??{},"session path aliases"),a=[];if(r.length===0)a.push(...Object.keys(o).sort()),delete i.pathAliases;else{for(const d of r){const p=(0,b.normalizePathAliasName)(d,"session path aliases");Object.prototype.hasOwnProperty.call(o,p)&&(a.push(p),delete o[p])}Object.keys(o).length>0?i.pathAliases=o:delete i.pathAliases}g(e,i);const f={cleared:a,aliases:(0,b.effectivePathAliases)(e,i.pathAliases??{})};return(0,m.attachAgentText)(f,V(f))}throw new u.CliError("UNKNOWN_SESSION_ALIASES_COMMAND",`Unknown session aliases command: ${s}`,{expected:"aib session aliases get | set | clear"})}function Ve(e){if(!y(e))throw new u.CliError("INVALID_SESSION_ALIASES_STDIN","session aliases set --stdin expects a JSON object.");const t=y(e.aliases)?e.aliases:e,n={};for(const[s,i]of Object.entries(t))typeof i=="string"&&(n[s]=i);return n}function ze(e){if(e.length===0||e.length%2!==0)throw new u.CliError("SESSION_ALIASES_SET_USAGE","Usage: aib session aliases set <name> <path> [<name> <path>...] or session aliases set --stdin");const t={};for(let n=0;n<e.length;n+=2)t[e[n]??""]=e[n+1]??"";return t}function V(e){if(y(e.updated))return re("aliases.updated",e.updated);if(Array.isArray(e.cleared)){const t=e.cleared.filter(n=>typeof n=="string");return t.length>0?["aliases.cleared",...t].join(`
|
|
3
3
|
`):"aliases.cleared none"}if(y(e.aliases)){const t=re("aliases",e.aliases).split(`
|
|
4
4
|
`);return t.length===1&&t.push("none"),t.join(`
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
`);return t.length===1&&t.push("no overrides"),typeof e.defaults=="string"&&t.push(e.defaults),t.join(`
|
|
9
9
|
`)}return y(e.prefs)?J("prefs",e.prefs):null}function J(e,t){const n=[e];for(const[s,i]of Object.entries(t).sort(([r],[o])=>r.localeCompare(o)))n.push(`${s}=${String(i)}`);return n.join(`
|
|
10
10
|
`)}function He(e){if(!y(e))throw new u.CliError("INVALID_SESSION_PREFS_STDIN","session prefs set --stdin expects a JSON object.");const t=y(e.prefs)?e.prefs:e,n={};for(const[s,i]of Object.entries(t))n[s]=i;return n}function Ge(e){if(e.length===0||e.length%2!==0)throw new u.CliError("SESSION_PREFS_SET_USAGE","Usage: aib session prefs set <key> <value> [<key> <value>...] or session prefs set --stdin");const t={};for(let n=0;n<e.length;n+=2){const s=e[n]??"",i=e[n+1]??"";t[s]=i}return t}function oe(e){if(Object.prototype.hasOwnProperty.call(O,e))return e;throw new u.CliError("UNKNOWN_SESSION_PREF",`Unknown session preference: ${e}`,{available:Object.keys(O)})}function Qe(e,t){const n=O[e];if(n.type==="boolean"){if(typeof t=="boolean")return t;if(typeof t=="string"){const i=t.trim().toLowerCase();if(i==="true")return!0;if(i==="false")return!1}throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects true or false.`)}if(n.type==="string"){if(typeof t!="string")throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects one of: ${n.values.join(", ")}.`);const i=t.trim();if(!n.values.includes(i))throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects one of: ${n.values.join(", ")}.`);return i}const s=typeof t=="number"?t:typeof t=="string"?Number(t):NaN;if(!Number.isInteger(s)||s<n.min||s>n.max)throw new u.CliError("INVALID_SESSION_PREF_VALUE",`${e} expects an integer from ${n.min} to ${n.max}.`);return s}function Ye(e){const t={};for(const n of Object.keys(O)){const s=O[n];"hidden"in s&&s.hidden||(s.type==="boolean"?t[n]=ce(e,n,s.default):s.type==="number"?t[n]=K(e,n,s.default):t[n]=le(e,n,s.default))}return t}function Ze(e){const t={};for(const[n,s]of Object.entries(e))Xe(n)||(t[n]=s);return t}function Xe(e){if(!Object.prototype.hasOwnProperty.call(O,e))return!1;const t=O[e];return"hidden"in t&&t.hidden===!0}function B(e,t){if(!M(t))return t;const n=A(e),s=Oe(t),i=s.scope==="input"?n.inputs:n.outputs,r=s.scope==="input"?s.kind:s.scope,o=i[r],a=s.name==="last"?o?.last:s.name,f=a?o?.items[a]:void 0;if(!f)throw new u.CliError("SESSION_HANDLE_NOT_FOUND",`Session handle not found: ${t}`,{handle:t,sessionDir:h(e,n.rootDir)});return f.file}function qe(e,t,n,s){const i=A(e),r=Ae(i,t,n,".json");l.mkdirSync(c.dirname(r),{recursive:!0}),l.writeFileSync(r,`${JSON.stringify(s,null,2)}
|
|
11
|
-
`);const o=C(i,"outputs",t,n,r);return g(e,i),{saved:o.handle,last:`aib:${t}:last`,file:h(e,r)}}function et(e,t,n,s,i=".txt"){const r=A(e),o=Ae(r,t,n,i);l.mkdirSync(c.dirname(o),{recursive:!0}),l.writeFileSync(o,s);const a=C(r,"outputs",t,n,o);return g(e,r),{saved:a.handle,last:`aib:${t}:last`,file:h(e,o)}}function tt(e,t,n,s){const i=v(e);if(!i)return null;const r=I(t),o=I(n),a=c.join(i.rootDir,"outputs","result",r,`${o}.json`);return x(a,s),{saved:`aib:result:${r}:${o}`,file:h(e,a)}}function nt(e,t,n){const s=v(e);if(!s)return null;const i=I(t),r=c.join(s.rootDir,"outputs","result",`${i}.json`);return x(r,n),{saved:`aib:${i}`,file:h(e,r)}}function st(e,t){const n=A(e),s=I(t),i=c.join(n.rootDir,"outputs","result",`${s}.json`);if(!l.existsSync(i))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:${s}`,{handle:`aib:${s}`,sessionDir:h(e,n.rootDir)});const r=JSON.parse(l.readFileSync(i,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:${s}`);return r}function it(e,t,n){const s=A(e),i=I(t),r=I(n),o=c.join(s.rootDir,"outputs","result",i,`${r}.json`);if(!l.existsSync(o))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:result:${i}:${r}`,{handle:`aib:result:${i}:${r}`,sessionDir:h(e,s.rootDir)});const a=JSON.parse(l.readFileSync(o,"utf8"));if(!a||typeof a!="object"||Array.isArray(a))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:result:${i}:${r}`);return a}function rt(e,t,n,s){return ae(e,t,n,s,{format:"json",text:JSON.stringify(s,null,2)})}function ae(e,t,n,s,i){const r=v(e);if(!r)return null;const o=i??{format:"json",text:JSON.stringify(s,null,2)},a=o.format==="dsl"?Z(r,t,n,".dsl"):Z(r,t,n,".json");o.format==="dsl"?(_e(a,o.text),x(Ft(r,t,n),s)):x(a,s);const f=C(r,"inputs",t,n,a);return Ne(r,t,s,o),g(e,r),{handle:f.handle,file:h(e,a)}}function ot(e){return l.existsSync(L(e))}function ue(e,t,n,s=-1){const i=v(e);if(!i)return n;const r=s>=0?s:K(i,"guidance.nextLimit",2),o=i.guidance??{},a=o[t]??{shown:0,limit:r};if(a.limit=r,a.shown>=a.limit){o[t]=a,i.guidance=o,g(e,i);return}return a.shown+=1,o[t]=a,i.guidance=o,g(e,i),n}function at(e,t,n){const s=v(e),i=O[t],r=typeof n=="boolean"?n:i.type==="boolean"?i.default:!1;return s?ce(s,t,r):r}function ut(e,t,n){const s=v(e),i=O[t],r=typeof n=="number"?n:i.type==="number"?i.default:0;return s?K(s,t,r):r}function ct(e,t,n){const s=v(e),i=O[t],r=typeof n=="string"?n:i.type==="string"?i.default:"";return s?le(s,t,r):r}function lt(e){try{const t=v(e);return(0,b.effectivePathAliases)(e,t?.pathAliases??{})}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return(0,b.effectivePathAliases)(e,{});throw t}}function ft(e){try{const t=v(e);return(0,b.normalizePathAliasMap)(t?.pathAliases??{},"session path aliases")}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return{};throw t}}function ce(e,t,n){const s=e.prefs?.[t];return typeof s=="boolean"?s:n}function K(e,t,n){const s=e.prefs?.[t];return typeof s=="number"&&Number.isFinite(s)?s:n}function le(e,t,n){const s=e.prefs?.[t];return typeof s=="string"?s:n}function dt(e,t){const n=w(t,"--dir"),s=Q(e,n,!0),i=w(t,"--name"),r=$(i??Y()??Jt()),o=c.join(s.rootDir,r),a=new Date().toISOString(),d=R(e,r)??{version:1,sessionId:r,cwd:c.resolve(e),rootDir:o,createdAt:a,updatedAt:a,outputs:{},inputs:{},guidance:{}};d.sessionId=r,d.rootDir=o,d.updatedAt=a,me(d),g(e,d),be(e,d,!0);const p=D(e),S=p?Object.keys(p.sessions).length:1,_={session:r,dir:h(e,d.rootDir),sessionDir:h(e,s.rootDir),sessionDirSource:s.source,sessionCount:S,bind:`${E.CLI_ENV.session}=${r}`,next:S===1?"Run AIB commands without -s for now. AIB will tell you if multiple sessions exist.":`Use aib -s ${r} <command> or set ${E.CLI_ENV.session}=${r}.`};return s.ignoredRequestedDir&&(_.note=`${U} from aib.json is in effect; --dir was ignored.`,_.requestedDir=s.ignoredRequestedDir),(0,m.attachAgentText)(_,pt(_))}function pt(e){const t=String(e.session??""),n=
|
|
11
|
+
`);const o=C(i,"outputs",t,n,r);return g(e,i),{saved:o.handle,last:`aib:${t}:last`,file:h(e,r)}}function et(e,t,n,s,i=".txt"){const r=A(e),o=Ae(r,t,n,i);l.mkdirSync(c.dirname(o),{recursive:!0}),l.writeFileSync(o,s);const a=C(r,"outputs",t,n,o);return g(e,r),{saved:a.handle,last:`aib:${t}:last`,file:h(e,o)}}function tt(e,t,n,s){const i=v(e);if(!i)return null;const r=I(t),o=I(n),a=c.join(i.rootDir,"outputs","result",r,`${o}.json`);return x(a,s),{saved:`aib:result:${r}:${o}`,file:h(e,a)}}function nt(e,t,n){const s=v(e);if(!s)return null;const i=I(t),r=c.join(s.rootDir,"outputs","result",`${i}.json`);return x(r,n),{saved:`aib:${i}`,file:h(e,r)}}function st(e,t){const n=A(e),s=I(t),i=c.join(n.rootDir,"outputs","result",`${s}.json`);if(!l.existsSync(i))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:${s}`,{handle:`aib:${s}`,sessionDir:h(e,n.rootDir)});const r=JSON.parse(l.readFileSync(i,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:${s}`);return r}function it(e,t,n){const s=A(e),i=I(t),r=I(n),o=c.join(s.rootDir,"outputs","result",i,`${r}.json`);if(!l.existsSync(o))throw new u.CliError("SESSION_RESULT_NOT_FOUND",`Result handle not found: aib:result:${i}:${r}`,{handle:`aib:result:${i}:${r}`,sessionDir:h(e,s.rootDir)});const a=JSON.parse(l.readFileSync(o,"utf8"));if(!a||typeof a!="object"||Array.isArray(a))throw new u.CliError("INVALID_SESSION_RESULT",`Result artifact is not a JSON object: aib:result:${i}:${r}`);return a}function rt(e,t,n,s){return ae(e,t,n,s,{format:"json",text:JSON.stringify(s,null,2)})}function ae(e,t,n,s,i){const r=v(e);if(!r)return null;const o=i??{format:"json",text:JSON.stringify(s,null,2)},a=o.format==="dsl"?Z(r,t,n,".dsl"):Z(r,t,n,".json");o.format==="dsl"?(_e(a,o.text),x(Ft(r,t,n),s)):x(a,s);const f=C(r,"inputs",t,n,a);return Ne(r,t,s,o),g(e,r),{handle:f.handle,file:h(e,a)}}function ot(e){return l.existsSync(L(e))}function ue(e,t,n,s=-1){const i=v(e);if(!i)return n;const r=s>=0?s:K(i,"guidance.nextLimit",2),o=i.guidance??{},a=o[t]??{shown:0,limit:r};if(a.limit=r,a.shown>=a.limit){o[t]=a,i.guidance=o,g(e,i);return}return a.shown+=1,o[t]=a,i.guidance=o,g(e,i),n}function at(e,t,n){const s=v(e),i=O[t],r=typeof n=="boolean"?n:i.type==="boolean"?i.default:!1;return s?ce(s,t,r):r}function ut(e,t,n){const s=v(e),i=O[t],r=typeof n=="number"?n:i.type==="number"?i.default:0;return s?K(s,t,r):r}function ct(e,t,n){const s=v(e),i=O[t],r=typeof n=="string"?n:i.type==="string"?i.default:"";return s?le(s,t,r):r}function lt(e){try{const t=v(e);return(0,b.effectivePathAliases)(e,t?.pathAliases??{})}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return(0,b.effectivePathAliases)(e,{});throw t}}function ft(e){try{const t=v(e);return(0,b.normalizePathAliasMap)(t?.pathAliases??{},"session path aliases")}catch(t){if(t instanceof u.CliError&&t.code==="MULTIPLE_AIB_SESSIONS")return{};throw t}}function ce(e,t,n){const s=e.prefs?.[t];return typeof s=="boolean"?s:n}function K(e,t,n){const s=e.prefs?.[t];return typeof s=="number"&&Number.isFinite(s)?s:n}function le(e,t,n){const s=e.prefs?.[t];return typeof s=="string"?s:n}function dt(e,t){const n=w(t,"--dir"),s=Q(e,n,!0),i=w(t,"--name"),r=$(i??Y()??Jt()),o=c.join(s.rootDir,r),a=new Date().toISOString(),d=R(e,r)??{version:1,sessionId:r,cwd:c.resolve(e),rootDir:o,createdAt:a,updatedAt:a,outputs:{},inputs:{},guidance:{}};d.sessionId=r,d.rootDir=o,d.updatedAt=a,me(d),g(e,d),be(e,d,!0);const p=D(e),S=p?Object.keys(p.sessions).length:1,_={session:r,dir:h(e,d.rootDir),sessionDir:h(e,s.rootDir),sessionDirSource:s.source,sessionCount:S,bind:`${E.CLI_ENV.session}=${r}`,next:S===1?"Run AIB commands without -s for now. AIB will tell you if multiple sessions exist.":`Use aib -s ${r} <command> or set ${E.CLI_ENV.session}=${r}.`};return s.ignoredRequestedDir&&(_.note=`${U} from aib.json is in effect; --dir was ignored.`,_.requestedDir=s.ignoredRequestedDir),(0,m.attachAgentText)(_,pt(_))}function pt(e){const t=String(e.session??""),n=typeof e.sessionCount=="number"?e.sessionCount:1,s=[`session ready: ${t}`,""];return typeof e.note=="string"&&e.note&&(s.push("aib.json sessionDir is in effect; --dir was ignored."),s.push("")),n===1?(s.push("Only one AIB session exists in this repo."),s.push("You can run AIB commands without -s for now."),s.push("AIB will tell you if multiple sessions exist and you need to choose one.")):(s.push("Multiple AIB sessions exist in this repo."),s.push("Use this session explicitly:"),s.push(`aib -s ${t} <command>`),s.push(""),s.push("Or bind it in this shell:"),s.push(`${E.CLI_ENV.session}=${t}`)),s.join(`
|
|
12
12
|
`)}function St(e){const t=D(e),n=k(e);return{active:n.sessionId??t?.activeSessionId??null,source:n.source,sessions:t?Object.values(t.sessions).sort((s,i)=>s.sessionId.localeCompare(i.sessionId)).map(s=>`${s.sessionId} -> ${h(e,s.rootDir)}`):[]}}function ht(e,t){const n=t[0]??"";if(!n)throw new u.CliError("SESSION_USE_ID_REQUIRED","Usage: aib session use <sessionId>");const s=$(n),i=D(e),r=i?.sessions[s];if(!r)throw new u.CliError("SESSION_NOT_FOUND",`Session not found: ${s}`,{available:i?Object.keys(i.sessions).sort():[]});return T(e,{...i??ge(e),activeSessionId:s}),{session:s,dir:h(e,r.rootDir),bind:`${E.CLI_ENV.session}=${s}`,next:`Use aib -s ${s} <command> or set ${E.CLI_ENV.session}=${s}.`}}function mt(e,t){const n=t[0]??"";if(!n)throw new u.CliError("SESSION_WHERE_HANDLE_REQUIRED","Usage: aib session where <handle>");const s=B(e,n),i={handle:n,file:h(e,s)};return(0,m.attachAgentText)(i,[n,i.file].join(`
|
|
13
13
|
`))}function It(e,t,n){if(t.includes("--stdin")){if(!y(n))throw new u.CliError("INVALID_SESSION_READ_STDIN","session read --stdin expects a JSON object payload.");const r=yt(n);if(r.length===1){const a=H(e,r[0]);return(0,m.attachAgentText)(a,G(a))}const o={reads:r.map(a=>gt(e,a))};return(0,m.attachAgentText)(o,G(o))}const s=t[0]??"";if(!s)throw new u.CliError("SESSION_READ_HANDLE_REQUIRED","Usage: aib session read <handle> [--head <n> | --offset <n> --limit <n>]");const i=H(e,{handle:s,...vt(t.slice(1))});return(0,m.attachAgentText)(i,G(i))}function yt(e){if(Array.isArray(e.reads))return e.reads.map((t,n)=>{if(typeof t=="string"){if(!M(t))throw new u.CliError("INVALID_SESSION_READ_ROW",`session read row at index ${n} must be an aib: handle string or an object.`);return{handle:t}}if(!y(t))throw new u.CliError("INVALID_SESSION_READ_ROW",`session read row at index ${n} must be an aib: handle string or an object.`);return fe(t,n)});if(typeof e.handle=="string"||typeof e.read=="string")return[fe(e,0)];throw new u.CliError("INVALID_SESSION_READ_STDIN","Expected { reads: [{ handle }] } or { handle }.")}function fe(e,t){const n=X(e.handle)??X(e.read);if(!n)throw new u.CliError("SESSION_READ_HANDLE_REQUIRED",`session read row at index ${t} requires handle.`);return{handle:n,...e.rawInput===!0?{rawInput:!0}:{},...pe(e,t)}}function gt(e,t){try{return H(e,t)}catch(n){if(n instanceof u.CliError){const s=y(n.details)?n.details:{};return{read:t.handle,error:n.code,...typeof s.next=="string"?{next:s.next}:{}}}return{read:t.handle,error:"UNEXPECTED_ERROR"}}}function H(e,t){Ot(t);const n=Oe(t.handle),s=B(e,t.handle);if(n.scope==="input"&&!t.rawInput){const r=Nt(n.kind,t.handle);return{read:t.handle,file:h(e,s),next:r?`Edit file, then rerun: ${r}`:"Edit file, then rerun the command with --from <handle>."}}if(n.scope==="graph"||n.scope==="usages"){const r=n.scope==="graph"?`aib inspect graph --from-file ${t.handle} --focus <file>`:`aib inspect usages --from-file ${t.handle} --focus <name>`;throw new u.CliError("SESSION_ARTIFACT_NOT_READABLE",`${n.scope} artifacts are reusable indexes, not agent-readable context.`,{handle:t.handle,kind:n.scope,next:r})}if(n.scope==="duplicates"){const r=l.readFileSync(s,"utf8");return{read:t.handle,content:bt(e,t.handle,s,r,t)}}const i=l.readFileSync(s,"utf8");return{read:t.handle,content:At(s,i,t)}}function bt(e,t,n,s,i){const r=Et(e,t,n,s);return i.head!==void 0||i.offset!==void 0||i.limit!==void 0?Se(r,i):r}function Et(e,t,n,s){let i;try{i=JSON.parse(s)}catch{return de(t,n,s)}if(!y(i))return de(t,n,s);const r=[],o=Array.isArray(i.targetPaths)?i.targetPaths.filter(S=>typeof S=="string"&&S!==""):[],a=o.length===1?h(e,o[0]):o.length>1?`${o.length} scopes`:"";r.push(a?`duplicates ${a}`:"duplicates");const f=typeof i.summary=="string"?i.summary:`${j(i.itemCount)} ${te(j(i.itemCount),"name")}`;r.push(f);const d=Array.isArray(i.items)?i.items.filter(y):[];for(const S of d){const _=typeof S.name=="string"?S.name:"",ve=j(S.declarationCount),ne=j(S.variantCount),se=j(S.exactCopyCount);_&&r.push(`${_} x${ve}, ${ne} ${te(ne,"variant")}${se>0?`, exact x${se}`:""}`)}const p=j(i.hiddenItemCount);return p>0&&r.push(`+ ${p} ${te(p,"name")}`),r.push(`raw: aib session where ${t}`),r.join(`
|
|
14
14
|
`)}function de(e,t,n){return[`saved artifact ${e}`,`${n.length} bytes`,`raw: ${t}`].join(`
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
`)}function _t(e){return typeof e=="string"?e:e===void 0?null:JSON.stringify(e,null,2)}function Nt(e,t){return e==="inspect"?`aib inspect --from ${t}`:e==="graph"?`aib inspect graph --from ${t}`:e==="rename"?`aib rename preview --from ${t}`:e==="move"?`aib move toFile preview --from ${t}`:e==="refactor"?`aib refactor batch preview --from ${t}`:e==="modulePlan"?`aib modulePlan preview --from ${t}`:e==="imports"?`aib imports normalize preview --from ${t}`:null}function Ot(e){if(e.head!==void 0&&(e.offset!==void 0||e.limit!==void 0))throw new u.CliError("SESSION_READ_RANGE_CONFLICT","Use either head or offset/limit, not both.")}function vt(e){const t={},n=w(e,"--head"),s=w(e,"--offset"),i=w(e,"--limit");return n!==void 0&&(t.head=n),s!==void 0&&(t.offset=s),i!==void 0&&(t.limit=i),{...e.includes("--raw-input")?{rawInput:!0}:{},...pe(t,0)}}function pe(e,t){const n=q(e.head,`session read row at index ${t} has invalid head.`),s=q(e.offset,`session read row at index ${t} has invalid offset.`),i=zt(e.limit,`session read row at index ${t} has invalid limit.`);return{...n!==void 0?{head:n}:{},...s!==void 0?{offset:s}:{},...i!==void 0?{limit:i}:{}}}function Se(e,t){if(t.head===void 0&&t.offset===void 0&&t.limit===void 0)return e;const n=e.split(/\r?\n/),s=t.head!==void 0?0:t.offset??0,i=t.head!==void 0?t.head:t.limit!==void 0?s+t.limit:void 0;return n.slice(s,i).join(`
|
|
17
17
|
`)}function Dt(e){const t=D(e),n=k(e),s=t?Object.keys(t.sessions).sort():[];if(n.source==="ambiguous")return(0,m.attachAgentText)({ok:!1,code:"MULTIPLE_AIB_SESSIONS",error:"Multiple AIB sessions exist. Select one explicitly.",available:s,next:`Use aib -s <session> <command> or set ${E.CLI_ENV.session}=<session>.`},jt(s));const i=n.sessionId?R(e,n.sessionId):null;if(!i){const o={initialized:!1,active:n.sessionId??null,source:n.source,available:s,next:n.sessionId?`Run aib session init --name ${n.sessionId}`:"Run aib session init --name <name>"};return(0,m.attachAgentText)(o,$t(o))}g(e,i);const r={initialized:!0,session:i.sessionId??n.sessionId,active:i.sessionId??n.sessionId,source:n.source,available:s,sessionDir:h(e,i.rootDir),aliases:(0,b.effectivePathAliases)(e,i.pathAliases??{}),latest:Mt(i),dirs:Vt(e,i)};return(0,m.attachAgentText)(r,xt(r))}function $t(e){const t=typeof e.active=="string"&&e.active?e.active:null;return t?["session not ready","",`Session ${t} was not found.`,"Create it:",`aib session init --name ${t}`].join(`
|
|
18
18
|
`):["session not ready","","No AIB sessions exist in this repo.","Create one:","aib session init --name <name>"].join(`
|
|
19
|
-
`)}function xt(e){const t=String(e.session??""),n=e.
|
|
19
|
+
`)}function xt(e){const t=String(e.session??""),n=e.aliases&&typeof e.aliases=="object"&&!Array.isArray(e.aliases)?e.aliases:{},s=[`session: ${t}`],i=Object.entries(n).filter(([,r])=>typeof r=="string"&&r.trim()!=="").sort(([r],[o])=>r.localeCompare(o)).map(([r,o])=>`@${r} -> ${String(o)}`);return i.length>0&&s.push("","aliases:",...i),e.source==="single"&&s.push("","Only one AIB session exists in this repo.","You can run AIB commands without -s."),s.join(`
|
|
20
20
|
`)}function jt(e){return["multiple AIB sessions","","available:",...e,"","Choose one:","aib -s <session> <command>","","Or bind it in this shell:",`${E.CLI_ENV.session}=<session>`,"","If none of these sessions is yours, create a new one:","aib session init --name <name>"].join(`
|
|
21
21
|
`)}function Ct(e){const t=k(e),n=D(e),s=n?Object.keys(n.sessions).sort():[];if(t.source==="ambiguous")return(0,m.attachAgentText)({ok:!1,code:"MULTIPLE_AIB_SESSIONS",error:"Multiple AIB sessions exist. Select one explicitly.",available:s,next:"Use aib -s <session> session clear."},wt(s));const i=t.sessionId?R(e,t.sessionId):null;if(!i)return(0,m.attachAgentText)({cleared:!1,reason:"session-not-initialized"},["No AIB sessions exist in this repo.","","Create one:","aib session init --name <name>"].join(`
|
|
22
22
|
`));he(i,{touch:!0}),g(e,i);const r=i.sessionId??t.sessionId??"";return(0,m.attachAgentText)({cleared:!0,session:r,dir:h(e,i.rootDir)},[`session cleared: ${r}`,"","Inputs and outputs were pruned.","You can keep using this session."].join(`
|
|
23
23
|
`))}function he(e,t){l.rmSync(c.join(e.rootDir,"inputs"),{recursive:!0,force:!0}),l.rmSync(c.join(e.rootDir,"outputs"),{recursive:!0,force:!0}),e.inputs={},e.outputs={},e.guidance={},t.touch&&(e.updatedAt=new Date().toISOString()),me(e)}function wt(e){return["multiple AIB sessions","","available:",...e,"","Clear one explicitly only if it is yours:","aib -s <session> session clear","","If none of these sessions is yours, create a new one:","aib session init --name <name>"].join(`
|
|
24
|
-
`)}function Rt(e){const t=Lt(e),n=D(e);if(!n)return;const s=Date.now();let i=!1;for(const[r,o]of Object.entries(n.sessions)){const a=P(o.rootDir);if(!l.existsSync(a)){delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}const f=Date.parse(o.updatedAt);if(!Number.isFinite(f))continue;const d=s-f;if(t.autoDelete&&t.ttlDeleteMs>0&&d>t.ttlDeleteMs){l.rmSync(o.rootDir,{recursive:!0,force:!0}),delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}if(t.autoClean&&t.ttlCleanMs>0&&d>t.ttlCleanMs){const p=Ie(e,o.rootDir,r);p&&(he(p,{touch:!1}),Pt(p))}}if(i){if(!n.activeSessionId){const r=Object.keys(n.sessions).sort()[0];r&&(n.activeSessionId=r)}T(e,n)}}function Lt(e){const t=(0,N.readWorkspaceNumberConfig)(e,"session.ttlMinutes",60),n=(0,N.readWorkspaceNumberConfig)(e,"session.ttlDeleteMinutes",t),s=(0,N.readWorkspaceNumberConfig)(e,"session.ttlCleanMinutes",t);return{autoDelete:(0,N.readWorkspaceBooleanConfig)(e,"session.autoDelete",!0),ttlDeleteMs:n>0?n*6e4:0,autoClean:(0,N.readWorkspaceBooleanConfig)(e,"session.autoClean",!0),ttlCleanMs:s>0?s*6e4:0}}function me(e){for(const t of ke)l.mkdirSync(c.join(e.rootDir,"outputs",t),{recursive:!0});for(const t of We)l.mkdirSync(c.join(e.rootDir,"inputs",t),{recursive:!0})}function R(e,t){const s=D(e)?.sessions[t];return s?Ie(e,s.rootDir,t):null}function v(e){const t=Ee(e);return t.sessionId?R(e,t.sessionId):null}function Ie(e,t,n){try{const s=JSON.parse(l.readFileSync(P(t),"utf8"));if(!s||typeof s!="object"||Array.isArray(s))return null;const i=s;return i.version!==1||typeof i.rootDir!="string"?null:(i.sessionId=i.sessionId??n,i)}catch{return null}}function A(e){const t=v(e);if(!t)throw new u.CliError("SESSION_WORKSPACE_NOT_INITIALIZED","Session workspace is not initialized.",{session:Y()??null,next:"Run aib session init --
|
|
24
|
+
`)}function Rt(e){const t=Lt(e),n=D(e);if(!n)return;const s=Date.now();let i=!1;for(const[r,o]of Object.entries(n.sessions)){const a=P(o.rootDir);if(!l.existsSync(a)){delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}const f=Date.parse(o.updatedAt);if(!Number.isFinite(f))continue;const d=s-f;if(t.autoDelete&&t.ttlDeleteMs>0&&d>t.ttlDeleteMs){l.rmSync(o.rootDir,{recursive:!0,force:!0}),delete n.sessions[r],i=!0,n.activeSessionId===r&&delete n.activeSessionId;continue}if(t.autoClean&&t.ttlCleanMs>0&&d>t.ttlCleanMs){const p=Ie(e,o.rootDir,r);p&&(he(p,{touch:!1}),Pt(p))}}if(i){if(!n.activeSessionId){const r=Object.keys(n.sessions).sort()[0];r&&(n.activeSessionId=r)}T(e,n)}}function Lt(e){const t=(0,N.readWorkspaceNumberConfig)(e,"session.ttlMinutes",60),n=(0,N.readWorkspaceNumberConfig)(e,"session.ttlDeleteMinutes",t),s=(0,N.readWorkspaceNumberConfig)(e,"session.ttlCleanMinutes",t);return{autoDelete:(0,N.readWorkspaceBooleanConfig)(e,"session.autoDelete",!0),ttlDeleteMs:n>0?n*6e4:0,autoClean:(0,N.readWorkspaceBooleanConfig)(e,"session.autoClean",!0),ttlCleanMs:s>0?s*6e4:0}}function me(e){for(const t of ke)l.mkdirSync(c.join(e.rootDir,"outputs",t),{recursive:!0});for(const t of We)l.mkdirSync(c.join(e.rootDir,"inputs",t),{recursive:!0})}function R(e,t){const s=D(e)?.sessions[t];return s?Ie(e,s.rootDir,t):null}function v(e){const t=Ee(e);return t.sessionId?R(e,t.sessionId):null}function Ie(e,t,n){try{const s=JSON.parse(l.readFileSync(P(t),"utf8"));if(!s||typeof s!="object"||Array.isArray(s))return null;const i=s;return i.version!==1||typeof i.rootDir!="string"?null:(i.sessionId=i.sessionId??n,i)}catch{return null}}function A(e){const t=v(e);if(!t)throw new u.CliError("SESSION_WORKSPACE_NOT_INITIALIZED","Session workspace is not initialized.",{session:Y()??null,next:"Run aib session init --name <name>",help:"aib help session"});return g(e,t),t}function g(e,t){t.updatedAt=new Date().toISOString(),l.mkdirSync(t.rootDir,{recursive:!0}),l.writeFileSync(P(t.rootDir),`${JSON.stringify(t,null,2)}
|
|
25
25
|
`),be(e,t,!1)}function Pt(e){l.mkdirSync(e.rootDir,{recursive:!0}),l.writeFileSync(P(e.rootDir),`${JSON.stringify(e,null,2)}
|
|
26
26
|
`)}function Q(e,t,n=!1){const s=(0,N.resolveWorkspaceRoot)(e),i=s?.root??e,r=s?X(s.config[U]):void 0;if(r)return{rootDir:ye(i,r),source:"aib.json",...t?{ignoredRequestedDir:t}:{}};const a=ye(i,t??je);return n&&s&&(0,N.updateWorkspaceConfig)(i,{[U]:Tt(i,a)}),{rootDir:a,source:t?"request":"default"}}function ye(e,t){const n=c.resolve(e,t);return c.basename(n).toLowerCase()==="aib"?n:c.join(n,"aib")}function Tt(e,t){const n=c.relative(e,t);return n&&!n.startsWith("..")&&!c.isAbsolute(n)?n.replace(/\\/g,"/"):t.replace(/\\/g,"/")}function L(e){return c.join(Q(e).rootDir,Ce)}function kt(e){return c.join(Q(e).rootDir,we)}function P(e){return c.join(e,"session.json")}function D(e){try{const t=JSON.parse(l.readFileSync(L(e),"utf8"));if(!t||typeof t!="object"||Array.isArray(t))return null;const n=t;return n.version!==1||!n.sessions||typeof n.sessions!="object"?null:{version:1,cwd:typeof n.cwd=="string"?n.cwd:c.resolve(e),...typeof n.activeSessionId=="string"?{activeSessionId:n.activeSessionId}:{},sessions:n.sessions}}catch{return null}}function T(e,t){t.cwd=c.resolve((0,N.resolveWorkspaceRoot)(e)?.root??e),l.mkdirSync(c.dirname(L(e)),{recursive:!0}),l.writeFileSync(L(e),`${JSON.stringify(t,null,2)}
|
|
27
27
|
`),Wt(e,t.activeSessionId)}function ge(e){return{version:1,cwd:c.resolve(e),sessions:{}}}function Wt(e,t){const n=kt(e);if(l.mkdirSync(c.dirname(n),{recursive:!0}),!t){l.rmSync(n,{force:!0});return}l.writeFileSync(n,`${JSON.stringify({sessionId:t,updatedAt:new Date().toISOString()},null,2)}
|
|
@@ -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}),_=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=g,exports.resolveRequiredWorkspaceRoot=C,exports.readWorkspaceNumberConfig=D,exports.readWorkspaceBooleanConfig=w,exports.readWorkspaceStringConfig=k,exports.updateWorkspaceConfig=E,exports.workspaceConfigSummary=W,exports.isPathInsideOrEqual=A;const c=_(require("node:fs")),s=_(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?I(n):{},f=a(t.sessionDir)??a(o.sessionDir),d=i(o["session.ttlMinutes"]),p=i(o["session.ttlCleanMinutes"])??d??60,m=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":m,"session.autoClean":u(o["session.autoClean"])??!0,"session.ttlCleanMinutes":p,"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 g(e){const t=a(process.env[N.CLI_ENV.workspaceRoot]);if(t){const d=s.resolve(e,t),p=s.join(d,exports.AIB_CONFIG_FILE_NAME),m=c.existsSync(p)?I(p):{"workspace.root":"."};return{root:d,configPath:p,config:m}}const n=F(e);if(!n)return null;const r=I(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=g(e);if(t)return t;const n=R(e,".git");throw new M.CliError("WORKSPACE_ROOT_NOT_INITIALIZED","Workspace root is not initialized.",{cwd:s.resolve(e),...n?{detectedGitRoot:n}:{},next:"Run aib help first-setup from the intended repository root."})}function D(e,t,n){const r=g(e);return(r?i(r.config[t]):null)??n}function w(e,t,n){const r=g(e);return(r?u(r.config[t]):null)??n}function k(e,t,n){const r=g(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 R(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 I(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)}}
|