@cleocode/cleo 2026.5.62 → 2026.5.64

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/cli/index.js CHANGED
@@ -11964,6 +11964,220 @@ var init_registry = __esm({
11964
11964
  description: "Preview without mutations"
11965
11965
  }
11966
11966
  ]
11967
+ },
11968
+ // ---------------------------------------------------------------------------
11969
+ // LLM domain — `cleo llm` CLI surface (T9258 · T-LLM-CRED Phase 2)
11970
+ // ---------------------------------------------------------------------------
11971
+ // llm query: list — redacted credential pool view
11972
+ {
11973
+ gateway: "query",
11974
+ domain: "llm",
11975
+ operation: "list",
11976
+ description: "llm.list (query) \u2014 list redacted credentials from the multi-credential pool, optionally filtered by provider",
11977
+ tier: 2,
11978
+ idempotent: true,
11979
+ sessionRequired: false,
11980
+ requiredParams: [],
11981
+ params: [
11982
+ {
11983
+ name: "provider",
11984
+ type: "string",
11985
+ required: false,
11986
+ description: "Filter to a single provider transport"
11987
+ }
11988
+ ]
11989
+ },
11990
+ // llm query: test — round-trip provider ping
11991
+ {
11992
+ gateway: "query",
11993
+ domain: "llm",
11994
+ operation: "test",
11995
+ description: "llm.test (query) \u2014 round-trip ping against the resolved provider; returns latency + response id (tokens never surfaced)",
11996
+ tier: 2,
11997
+ idempotent: true,
11998
+ sessionRequired: false,
11999
+ requiredParams: ["provider"],
12000
+ params: [
12001
+ {
12002
+ name: "provider",
12003
+ type: "string",
12004
+ required: true,
12005
+ description: "Provider transport to probe",
12006
+ cli: { positional: true }
12007
+ },
12008
+ {
12009
+ name: "label",
12010
+ type: "string",
12011
+ required: false,
12012
+ description: "Credential label to pin the test to a specific store entry"
12013
+ },
12014
+ {
12015
+ name: "model",
12016
+ type: "string",
12017
+ required: false,
12018
+ description: "Model override (defaults to the provider's implicit fallback)"
12019
+ }
12020
+ ]
12021
+ },
12022
+ // llm query: whoami — role-by-role resolver dump
12023
+ {
12024
+ gateway: "query",
12025
+ domain: "llm",
12026
+ operation: "whoami",
12027
+ description: "llm.whoami (query) \u2014 resolve every role and report which provider / model / credential would be picked",
12028
+ tier: 2,
12029
+ idempotent: true,
12030
+ sessionRequired: false,
12031
+ requiredParams: [],
12032
+ params: [
12033
+ {
12034
+ name: "role",
12035
+ type: "string",
12036
+ required: false,
12037
+ description: "Optional role filter (extraction | consolidation | derivation | hygiene | judgement)"
12038
+ }
12039
+ ]
12040
+ },
12041
+ // llm mutate: add — upsert credential into the pool
12042
+ {
12043
+ gateway: "mutate",
12044
+ domain: "llm",
12045
+ operation: "add",
12046
+ description: "llm.add (mutate) \u2014 upsert a credential into the multi-credential pool; auto-detects authType from token prefix",
12047
+ tier: 2,
12048
+ idempotent: false,
12049
+ sessionRequired: false,
12050
+ requiredParams: ["provider", "apiKey"],
12051
+ params: [
12052
+ {
12053
+ name: "provider",
12054
+ type: "string",
12055
+ required: true,
12056
+ description: "Provider transport",
12057
+ cli: { positional: true }
12058
+ },
12059
+ {
12060
+ name: "apiKey",
12061
+ type: "string",
12062
+ required: true,
12063
+ description: "API key or OAuth bearer token to persist"
12064
+ },
12065
+ {
12066
+ name: "label",
12067
+ type: "string",
12068
+ required: false,
12069
+ description: "Human-readable label, unique within provider (default: 'default')"
12070
+ },
12071
+ {
12072
+ name: "baseUrl",
12073
+ type: "string",
12074
+ required: false,
12075
+ description: "Optional override for the provider base URL"
12076
+ },
12077
+ {
12078
+ name: "authType",
12079
+ type: "string",
12080
+ required: false,
12081
+ description: "Explicit auth type override ('api_key' | 'oauth' | 'aws_sdk')"
12082
+ },
12083
+ {
12084
+ name: "priority",
12085
+ type: "number",
12086
+ required: false,
12087
+ description: "Optional priority override (lower wins)"
12088
+ }
12089
+ ]
12090
+ },
12091
+ // llm mutate: remove — delete (provider, label) pair
12092
+ {
12093
+ gateway: "mutate",
12094
+ domain: "llm",
12095
+ operation: "remove",
12096
+ description: "llm.remove (mutate) \u2014 delete a (provider, label) credential pair from the pool",
12097
+ tier: 2,
12098
+ idempotent: true,
12099
+ sessionRequired: false,
12100
+ requiredParams: ["provider", "label"],
12101
+ params: [
12102
+ {
12103
+ name: "provider",
12104
+ type: "string",
12105
+ required: true,
12106
+ description: "Provider transport",
12107
+ cli: { positional: true }
12108
+ },
12109
+ {
12110
+ name: "label",
12111
+ type: "string",
12112
+ required: true,
12113
+ description: "Label of the credential to remove"
12114
+ }
12115
+ ]
12116
+ },
12117
+ // llm mutate: use — set llm.default.{provider,model}
12118
+ {
12119
+ gateway: "mutate",
12120
+ domain: "llm",
12121
+ operation: "use",
12122
+ description: "llm.use (mutate) \u2014 set llm.default.{provider,model} in the global config",
12123
+ tier: 2,
12124
+ idempotent: true,
12125
+ sessionRequired: false,
12126
+ requiredParams: ["provider"],
12127
+ params: [
12128
+ {
12129
+ name: "provider",
12130
+ type: "string",
12131
+ required: true,
12132
+ description: "Provider transport to mark as default",
12133
+ cli: { positional: true }
12134
+ },
12135
+ {
12136
+ name: "model",
12137
+ type: "string",
12138
+ required: false,
12139
+ description: "Optional default model identifier"
12140
+ }
12141
+ ]
12142
+ },
12143
+ // llm mutate: profile — set llm.roles[role]
12144
+ {
12145
+ gateway: "mutate",
12146
+ domain: "llm",
12147
+ operation: "profile",
12148
+ description: "llm.profile (mutate) \u2014 pin a role to a specific provider / model / credential label",
12149
+ tier: 2,
12150
+ idempotent: true,
12151
+ sessionRequired: false,
12152
+ requiredParams: ["role", "provider"],
12153
+ params: [
12154
+ {
12155
+ name: "role",
12156
+ type: "string",
12157
+ required: true,
12158
+ description: "Role name (extraction | consolidation | derivation | hygiene | judgement)",
12159
+ cli: { positional: true }
12160
+ },
12161
+ {
12162
+ name: "provider",
12163
+ type: "string",
12164
+ required: true,
12165
+ description: "Provider transport for this role",
12166
+ cli: { positional: true }
12167
+ },
12168
+ {
12169
+ name: "model",
12170
+ type: "string",
12171
+ required: false,
12172
+ description: "Optional model identifier for this role"
12173
+ },
12174
+ {
12175
+ name: "credentialLabel",
12176
+ type: "string",
12177
+ required: false,
12178
+ description: "Optional credential label to pin this role to a specific store entry"
12179
+ }
12180
+ ]
11967
12181
  }
11968
12182
  ];
11969
12183
  counts = getCounts();
@@ -16458,6 +16672,107 @@ var init_intelligence2 = __esm({
16458
16672
  }
16459
16673
  });
16460
16674
 
16675
+ // packages/cleo/src/dispatch/domains/llm/index.ts
16676
+ import {
16677
+ llmAdd,
16678
+ llmList,
16679
+ llmProfile,
16680
+ llmRemove,
16681
+ llmTest,
16682
+ llmUse,
16683
+ llmWhoami
16684
+ } from "@cleocode/core/internal";
16685
+ async function wrap(op, params, label) {
16686
+ try {
16687
+ const result = await op(params);
16688
+ if (result.success) return lafsSuccess(result.data, label);
16689
+ return lafsError(String(result.error.code), result.error.message, label);
16690
+ } catch (err) {
16691
+ return lafsError("E_INTERNAL", err instanceof Error ? err.message : String(err), label);
16692
+ }
16693
+ }
16694
+ var coreOps, _llmTypedHandler, QUERY_OPS4, MUTATE_OPS4, LlmHandler;
16695
+ var init_llm2 = __esm({
16696
+ "packages/cleo/src/dispatch/domains/llm/index.ts"() {
16697
+ "use strict";
16698
+ init_typed();
16699
+ init_base();
16700
+ coreOps = {
16701
+ list: llmList,
16702
+ test: llmTest,
16703
+ whoami: llmWhoami,
16704
+ add: llmAdd,
16705
+ remove: llmRemove,
16706
+ use: llmUse,
16707
+ profile: llmProfile
16708
+ };
16709
+ _llmTypedHandler = defineTypedHandler("llm", {
16710
+ // -------------------------------------------------------------------------
16711
+ // Query ops
16712
+ // -------------------------------------------------------------------------
16713
+ list: async (params) => wrap(coreOps["list"], params, "list"),
16714
+ test: async (params) => wrap(coreOps["test"], params, "test"),
16715
+ whoami: async (params) => wrap(coreOps["whoami"], params, "whoami"),
16716
+ // -------------------------------------------------------------------------
16717
+ // Mutate ops
16718
+ // -------------------------------------------------------------------------
16719
+ add: async (params) => wrap(coreOps["add"], params, "add"),
16720
+ remove: async (params) => wrap(coreOps["remove"], params, "remove"),
16721
+ use: async (params) => wrap(coreOps["use"], params, "use"),
16722
+ profile: async (params) => wrap(coreOps["profile"], params, "profile")
16723
+ });
16724
+ QUERY_OPS4 = /* @__PURE__ */ new Set(["list", "test", "whoami"]);
16725
+ MUTATE_OPS4 = /* @__PURE__ */ new Set(["add", "remove", "use", "profile"]);
16726
+ LlmHandler = class {
16727
+ /** Declared operations for introspection and validation. */
16728
+ getSupportedOperations() {
16729
+ return {
16730
+ query: ["list", "test", "whoami"],
16731
+ mutate: ["add", "remove", "use", "profile"]
16732
+ };
16733
+ }
16734
+ /**
16735
+ * Execute a read-only llm query operation.
16736
+ */
16737
+ async query(operation, params) {
16738
+ const startTime = Date.now();
16739
+ if (!QUERY_OPS4.has(operation)) {
16740
+ return unsupportedOp("query", "llm", operation, startTime);
16741
+ }
16742
+ try {
16743
+ const envelope = await typedDispatch(
16744
+ _llmTypedHandler,
16745
+ operation,
16746
+ params ?? {}
16747
+ );
16748
+ return wrapResult(envelopeToEngineResult(envelope), "query", "llm", operation, startTime);
16749
+ } catch (error) {
16750
+ return handleErrorResult("query", "llm", operation, error, startTime);
16751
+ }
16752
+ }
16753
+ /**
16754
+ * Execute a state-modifying llm mutate operation.
16755
+ */
16756
+ async mutate(operation, params) {
16757
+ const startTime = Date.now();
16758
+ if (!MUTATE_OPS4.has(operation)) {
16759
+ return unsupportedOp("mutate", "llm", operation, startTime);
16760
+ }
16761
+ try {
16762
+ const envelope = await typedDispatch(
16763
+ _llmTypedHandler,
16764
+ operation,
16765
+ params ?? {}
16766
+ );
16767
+ return wrapResult(envelopeToEngineResult(envelope), "mutate", "llm", operation, startTime);
16768
+ } catch (error) {
16769
+ return handleErrorResult("mutate", "llm", operation, error, startTime);
16770
+ }
16771
+ }
16772
+ };
16773
+ }
16774
+ });
16775
+
16461
16776
  // packages/cleo/src/dispatch/domains/memory.ts
16462
16777
  import { getLogger as getLogger6, getProjectRoot as getProjectRoot6 } from "@cleocode/core";
16463
16778
  import {
@@ -18652,7 +18967,7 @@ async function handleImpact(operation, params, startTime) {
18652
18967
  return handleErrorResult("query", "nexus", operation, dbErr, startTime);
18653
18968
  }
18654
18969
  }
18655
- var _nexusTypedHandler, QUERY_OPS4, MUTATE_OPS4, NexusHandler, IMPACT_REVERSE_TYPES;
18970
+ var _nexusTypedHandler, QUERY_OPS5, MUTATE_OPS5, NexusHandler, IMPACT_REVERSE_TYPES;
18656
18971
  var init_nexus3 = __esm({
18657
18972
  "packages/cleo/src/dispatch/domains/nexus.ts"() {
18658
18973
  "use strict";
@@ -19072,7 +19387,7 @@ var init_nexus3 = __esm({
19072
19387
  },
19073
19388
  "sigil.sync": async (_params) => wrapCoreResult(await nexusSigilSync(), "sigil.sync")
19074
19389
  });
19075
- QUERY_OPS4 = /* @__PURE__ */ new Set([
19390
+ QUERY_OPS5 = /* @__PURE__ */ new Set([
19076
19391
  "share.status",
19077
19392
  "status",
19078
19393
  "list",
@@ -19114,7 +19429,7 @@ var init_nexus3 = __esm({
19114
19429
  "hot-nodes",
19115
19430
  "cold-symbols"
19116
19431
  ]);
19117
- MUTATE_OPS4 = /* @__PURE__ */ new Set([
19432
+ MUTATE_OPS5 = /* @__PURE__ */ new Set([
19118
19433
  "share.snapshot.export",
19119
19434
  "share.snapshot.import",
19120
19435
  "init",
@@ -19149,7 +19464,7 @@ var init_nexus3 = __esm({
19149
19464
  */
19150
19465
  async query(operation, params) {
19151
19466
  const startTime = Date.now();
19152
- if (!QUERY_OPS4.has(operation)) {
19467
+ if (!QUERY_OPS5.has(operation)) {
19153
19468
  return unsupportedOp("query", "nexus", operation, startTime);
19154
19469
  }
19155
19470
  if (operation === "top-entries") {
@@ -19184,7 +19499,7 @@ var init_nexus3 = __esm({
19184
19499
  */
19185
19500
  async mutate(operation, params) {
19186
19501
  const startTime = Date.now();
19187
- if (!MUTATE_OPS4.has(operation)) {
19502
+ if (!MUTATE_OPS5.has(operation)) {
19188
19503
  return unsupportedOp("mutate", "nexus", operation, startTime);
19189
19504
  }
19190
19505
  try {
@@ -19206,8 +19521,8 @@ var init_nexus3 = __esm({
19206
19521
  /** Declared operations for introspection and validation. */
19207
19522
  getSupportedOperations() {
19208
19523
  return {
19209
- query: Array.from(QUERY_OPS4),
19210
- mutate: Array.from(MUTATE_OPS4)
19524
+ query: Array.from(QUERY_OPS5),
19525
+ mutate: Array.from(MUTATE_OPS5)
19211
19526
  };
19212
19527
  }
19213
19528
  };
@@ -24076,7 +24391,7 @@ async function lookupApprovalByTokenForDispatch(token) {
24076
24391
  const db = await acquireDb();
24077
24392
  return getPlaybookApprovalByToken(db, token);
24078
24393
  }
24079
- var __playbookRuntimeOverrides, _playbookTypedHandler, QUERY_OPS5, MUTATE_OPS5, PlaybookHandler;
24394
+ var __playbookRuntimeOverrides, _playbookTypedHandler, QUERY_OPS6, MUTATE_OPS6, PlaybookHandler;
24080
24395
  var init_playbook2 = __esm({
24081
24396
  "packages/cleo/src/dispatch/domains/playbook.ts"() {
24082
24397
  "use strict";
@@ -24379,15 +24694,15 @@ var init_playbook2 = __esm({
24379
24694
  }
24380
24695
  }
24381
24696
  });
24382
- QUERY_OPS5 = /* @__PURE__ */ new Set(["status", "list", "validate", "catalog"]);
24383
- MUTATE_OPS5 = /* @__PURE__ */ new Set(["run", "resume"]);
24697
+ QUERY_OPS6 = /* @__PURE__ */ new Set(["status", "list", "validate", "catalog"]);
24698
+ MUTATE_OPS6 = /* @__PURE__ */ new Set(["run", "resume"]);
24384
24699
  PlaybookHandler = class {
24385
24700
  /**
24386
24701
  * Query gateway — `status`, `list`, and `validate`.
24387
24702
  */
24388
24703
  async query(operation, params) {
24389
24704
  const startTime = Date.now();
24390
- if (!QUERY_OPS5.has(operation)) {
24705
+ if (!QUERY_OPS6.has(operation)) {
24391
24706
  return unsupportedOp("query", "playbook", operation, startTime);
24392
24707
  }
24393
24708
  try {
@@ -24415,7 +24730,7 @@ var init_playbook2 = __esm({
24415
24730
  */
24416
24731
  async mutate(operation, params) {
24417
24732
  const startTime = Date.now();
24418
- if (!MUTATE_OPS5.has(operation)) {
24733
+ if (!MUTATE_OPS6.has(operation)) {
24419
24734
  return unsupportedOp("mutate", "playbook", operation, startTime);
24420
24735
  }
24421
24736
  try {
@@ -25095,7 +25410,7 @@ async function handleRejectGate(params, startTime) {
25095
25410
  return handleErrorResult("mutate", "orchestrate", "reject", error, startTime);
25096
25411
  }
25097
25412
  }
25098
- var ivtrHandler, FANOUT_MANIFEST_MAX_SIZE, fanoutManifestStore, coreOps, OrchestrateHandler;
25413
+ var ivtrHandler, FANOUT_MANIFEST_MAX_SIZE, fanoutManifestStore, coreOps2, OrchestrateHandler;
25099
25414
  var init_orchestrate2 = __esm({
25100
25415
  "packages/cleo/src/dispatch/domains/orchestrate.ts"() {
25101
25416
  "use strict";
@@ -25109,7 +25424,7 @@ var init_orchestrate2 = __esm({
25109
25424
  ivtrHandler = new IvtrHandler();
25110
25425
  FANOUT_MANIFEST_MAX_SIZE = 64;
25111
25426
  fanoutManifestStore = /* @__PURE__ */ new Map();
25112
- coreOps = {
25427
+ coreOps2 = {
25113
25428
  status: orchestrateStatusOp,
25114
25429
  next: orchestrateNextOp,
25115
25430
  ready: orchestrateReadyOp,
@@ -25149,7 +25464,7 @@ var init_orchestrate2 = __esm({
25149
25464
  switch (operation) {
25150
25465
  case "status": {
25151
25466
  const p = { epicId: params?.epicId };
25152
- return wrapResult(await coreOps.status(p), "query", "orchestrate", operation, startTime);
25467
+ return wrapResult(await coreOps2.status(p), "query", "orchestrate", operation, startTime);
25153
25468
  }
25154
25469
  case "next": {
25155
25470
  if (!params?.epicId)
@@ -25162,7 +25477,7 @@ var init_orchestrate2 = __esm({
25162
25477
  startTime
25163
25478
  );
25164
25479
  const p = { epicId: params.epicId };
25165
- return wrapResult(await coreOps.next(p), "query", "orchestrate", operation, startTime);
25480
+ return wrapResult(await coreOps2.next(p), "query", "orchestrate", operation, startTime);
25166
25481
  }
25167
25482
  case "ready": {
25168
25483
  if (!params?.epicId)
@@ -25178,7 +25493,7 @@ var init_orchestrate2 = __esm({
25178
25493
  epicId: params.epicId,
25179
25494
  ignoreDepsValidate: params.ignoreDepsValidate
25180
25495
  };
25181
- return wrapResult(await coreOps.ready(p), "query", "orchestrate", operation, startTime);
25496
+ return wrapResult(await coreOps2.ready(p), "query", "orchestrate", operation, startTime);
25182
25497
  }
25183
25498
  case "analyze": {
25184
25499
  const p = {
@@ -25187,7 +25502,7 @@ var init_orchestrate2 = __esm({
25187
25502
  taskIds: params?.taskIds
25188
25503
  };
25189
25504
  return wrapResult(
25190
- await coreOps.analyze(p),
25505
+ await coreOps2.analyze(p),
25191
25506
  "query",
25192
25507
  "orchestrate",
25193
25508
  "analyze",
@@ -25209,7 +25524,7 @@ var init_orchestrate2 = __esm({
25209
25524
  context: params.context
25210
25525
  };
25211
25526
  return wrapResult(
25212
- await coreOps.classify(p),
25527
+ await coreOps2.classify(p),
25213
25528
  "query",
25214
25529
  "orchestrate",
25215
25530
  operation,
@@ -25229,7 +25544,7 @@ var init_orchestrate2 = __esm({
25229
25544
  const p = {
25230
25545
  manifestEntryId: params.manifestEntryId
25231
25546
  };
25232
- const result = await coreOps["fanout.status"](p);
25547
+ const result = await coreOps2["fanout.status"](p);
25233
25548
  return {
25234
25549
  meta: dispatchMeta("query", "orchestrate", operation, startTime),
25235
25550
  success: true,
@@ -25238,7 +25553,7 @@ var init_orchestrate2 = __esm({
25238
25553
  }
25239
25554
  case "context": {
25240
25555
  const p = { epicId: params?.epicId };
25241
- return wrapResult(await coreOps.context(p), "query", "orchestrate", operation, startTime);
25556
+ return wrapResult(await coreOps2.context(p), "query", "orchestrate", operation, startTime);
25242
25557
  }
25243
25558
  case "waves": {
25244
25559
  if (!params?.epicId)
@@ -25251,7 +25566,7 @@ var init_orchestrate2 = __esm({
25251
25566
  startTime
25252
25567
  );
25253
25568
  const p = { epicId: params.epicId };
25254
- return wrapResult(await coreOps.waves(p), "query", "orchestrate", operation, startTime);
25569
+ return wrapResult(await coreOps2.waves(p), "query", "orchestrate", operation, startTime);
25255
25570
  }
25256
25571
  case "plan": {
25257
25572
  if (!params?.epicId)
@@ -25269,14 +25584,14 @@ var init_orchestrate2 = __esm({
25269
25584
  preferTier = preferTierRaw;
25270
25585
  }
25271
25586
  const p = { epicId: params.epicId, preferTier };
25272
- return wrapResult(await coreOps.plan(p), "query", "orchestrate", operation, startTime);
25587
+ return wrapResult(await coreOps2.plan(p), "query", "orchestrate", operation, startTime);
25273
25588
  }
25274
25589
  case "bootstrap": {
25275
25590
  const p = {
25276
25591
  speed: params?.speed
25277
25592
  };
25278
25593
  return wrapResult(
25279
- await coreOps.bootstrap(p),
25594
+ await coreOps2.bootstrap(p),
25280
25595
  "query",
25281
25596
  "orchestrate",
25282
25597
  operation,
@@ -25285,7 +25600,7 @@ var init_orchestrate2 = __esm({
25285
25600
  }
25286
25601
  case "unblock.opportunities":
25287
25602
  return wrapResult(
25288
- await coreOps["unblock.opportunities"]({}),
25603
+ await coreOps2["unblock.opportunities"]({}),
25289
25604
  "query",
25290
25605
  "orchestrate",
25291
25606
  operation,
@@ -25362,7 +25677,7 @@ var init_orchestrate2 = __esm({
25362
25677
  startTime
25363
25678
  );
25364
25679
  const p = { epicId: params.epicId };
25365
- return wrapResult(await coreOps.start(p), "mutate", "orchestrate", operation, startTime);
25680
+ return wrapResult(await coreOps2.start(p), "mutate", "orchestrate", operation, startTime);
25366
25681
  }
25367
25682
  case "spawn": {
25368
25683
  if (!params?.taskId)
@@ -25382,7 +25697,7 @@ var init_orchestrate2 = __esm({
25382
25697
  tier,
25383
25698
  noWorktree: params.noWorktree
25384
25699
  };
25385
- return wrapResult(await coreOps.spawn(p), "mutate", "orchestrate", operation, startTime);
25700
+ return wrapResult(await coreOps2.spawn(p), "mutate", "orchestrate", operation, startTime);
25386
25701
  }
25387
25702
  case "handoff": {
25388
25703
  if (!params?.taskId)
@@ -25415,7 +25730,7 @@ var init_orchestrate2 = __esm({
25415
25730
  idempotencyKey: params.idempotencyKey
25416
25731
  };
25417
25732
  return wrapResult(
25418
- await coreOps.handoff(p),
25733
+ await coreOps2.handoff(p),
25419
25734
  "mutate",
25420
25735
  "orchestrate",
25421
25736
  operation,
@@ -25441,7 +25756,7 @@ var init_orchestrate2 = __esm({
25441
25756
  tier
25442
25757
  };
25443
25758
  return wrapResult(
25444
- await coreOps["spawn.execute"](p),
25759
+ await coreOps2["spawn.execute"](p),
25445
25760
  "mutate",
25446
25761
  "orchestrate",
25447
25762
  operation,
@@ -25460,7 +25775,7 @@ var init_orchestrate2 = __esm({
25460
25775
  );
25461
25776
  const p = { taskId: params.taskId };
25462
25777
  return wrapResult(
25463
- await coreOps.validate(p),
25778
+ await coreOps2.validate(p),
25464
25779
  "mutate",
25465
25780
  "orchestrate",
25466
25781
  operation,
@@ -25502,7 +25817,7 @@ var init_orchestrate2 = __esm({
25502
25817
  blocksFrom: params.blocksFrom
25503
25818
  };
25504
25819
  return wrapResult(
25505
- await coreOps.pivot(p),
25820
+ await coreOps2.pivot(p),
25506
25821
  "mutate",
25507
25822
  "orchestrate",
25508
25823
  operation,
@@ -25521,7 +25836,7 @@ var init_orchestrate2 = __esm({
25521
25836
  );
25522
25837
  const p = { taskId: params.taskId };
25523
25838
  return wrapResult(
25524
- await coreOps["worktree.complete"](p),
25839
+ await coreOps2["worktree.complete"](p),
25525
25840
  "mutate",
25526
25841
  "orchestrate",
25527
25842
  operation,
@@ -25533,7 +25848,7 @@ var init_orchestrate2 = __esm({
25533
25848
  taskIds: params?.taskIds
25534
25849
  };
25535
25850
  return wrapResult(
25536
- await coreOps["worktree.cleanup"](p),
25851
+ await coreOps2["worktree.cleanup"](p),
25537
25852
  "mutate",
25538
25853
  "orchestrate",
25539
25854
  operation,
@@ -25545,7 +25860,7 @@ var init_orchestrate2 = __esm({
25545
25860
  taskId: params?.taskId
25546
25861
  };
25547
25862
  return wrapResult(
25548
- await coreOps["worktree.prune"](p),
25863
+ await coreOps2["worktree.prune"](p),
25549
25864
  "mutate",
25550
25865
  "orchestrate",
25551
25866
  operation,
@@ -25627,7 +25942,7 @@ var init_orchestrate2 = __esm({
25627
25942
  );
25628
25943
  const p = { items };
25629
25944
  return wrapResult(
25630
- await coreOps.fanout(p),
25945
+ await coreOps2.fanout(p),
25631
25946
  "mutate",
25632
25947
  "orchestrate",
25633
25948
  operation,
@@ -26003,7 +26318,7 @@ function pipelineEnvelopeResponse(envelope, operation, startTime) {
26003
26318
  ...enginePage ? { page: enginePage } : {}
26004
26319
  };
26005
26320
  }
26006
- var coreOps2, _pipelineTypedHandler, PipelineHandler;
26321
+ var coreOps3, _pipelineTypedHandler, PipelineHandler;
26007
26322
  var init_pipeline3 = __esm({
26008
26323
  "packages/cleo/src/dispatch/domains/pipeline.ts"() {
26009
26324
  "use strict";
@@ -26011,7 +26326,7 @@ var init_pipeline3 = __esm({
26011
26326
  init_engine();
26012
26327
  init_base();
26013
26328
  init_meta2();
26014
- coreOps2 = {
26329
+ coreOps3 = {
26015
26330
  "stage.validate": stageValidateOp,
26016
26331
  "stage.status": stageStatusOp,
26017
26332
  "stage.history": stageHistoryOp,
@@ -26056,19 +26371,19 @@ var init_pipeline3 = __esm({
26056
26371
  if (!params.epicId || !params.targetStage) {
26057
26372
  return lafsError("E_INVALID_INPUT", "epicId and targetStage are required", "stage.validate");
26058
26373
  }
26059
- return wrapCoreResult(await coreOps2["stage.validate"](params), "stage.validate");
26374
+ return wrapCoreResult(await coreOps3["stage.validate"](params), "stage.validate");
26060
26375
  },
26061
26376
  "stage.status": async (params) => {
26062
26377
  if (!params.epicId) {
26063
26378
  return lafsError("E_INVALID_INPUT", "epicId is required", "stage.status");
26064
26379
  }
26065
- return wrapCoreResult(await coreOps2["stage.status"](params), "stage.status");
26380
+ return wrapCoreResult(await coreOps3["stage.status"](params), "stage.status");
26066
26381
  },
26067
26382
  "stage.history": async (params) => {
26068
26383
  if (!params.taskId) {
26069
26384
  return lafsError("E_INVALID_INPUT", "taskId is required", "stage.history");
26070
26385
  }
26071
- return wrapCoreResult(await coreOps2["stage.history"](params), "stage.history");
26386
+ return wrapCoreResult(await coreOps3["stage.history"](params), "stage.history");
26072
26387
  },
26073
26388
  // SSoT-EXEMPT: sentinel-unwrap from stageGuidanceOp + isValidStage + buildStageGuidance
26074
26389
  // + formatStageGuidance — Core fn returns an intermediate sentinel shape; dispatch
@@ -26078,7 +26393,7 @@ var init_pipeline3 = __esm({
26078
26393
  _stage: stage,
26079
26394
  _format: format,
26080
26395
  _projectRoot: projectRoot
26081
- } = await coreOps2["stage.guidance"](params);
26396
+ } = await coreOps3["stage.guidance"](params);
26082
26397
  if (!stage) {
26083
26398
  return lafsError(
26084
26399
  "E_INVALID_INPUT",
@@ -26110,37 +26425,37 @@ var init_pipeline3 = __esm({
26110
26425
  if (!params.taskId || !params.stage || !params.status) {
26111
26426
  return lafsError("E_INVALID_INPUT", "taskId, stage, and status are required", "stage.record");
26112
26427
  }
26113
- return wrapCoreResult(await coreOps2["stage.record"](params), "stage.record");
26428
+ return wrapCoreResult(await coreOps3["stage.record"](params), "stage.record");
26114
26429
  },
26115
26430
  "stage.skip": async (params) => {
26116
26431
  if (!params.taskId || !params.stage || !params.reason) {
26117
26432
  return lafsError("E_INVALID_INPUT", "taskId, stage, and reason are required", "stage.skip");
26118
26433
  }
26119
- return wrapCoreResult(await coreOps2["stage.skip"](params), "stage.skip");
26434
+ return wrapCoreResult(await coreOps3["stage.skip"](params), "stage.skip");
26120
26435
  },
26121
26436
  "stage.reset": async (params) => {
26122
26437
  if (!params.taskId || !params.stage || !params.reason) {
26123
26438
  return lafsError("E_INVALID_INPUT", "taskId, stage, and reason are required", "stage.reset");
26124
26439
  }
26125
- return wrapCoreResult(await coreOps2["stage.reset"](params), "stage.reset");
26440
+ return wrapCoreResult(await coreOps3["stage.reset"](params), "stage.reset");
26126
26441
  },
26127
26442
  "stage.gate.pass": async (params) => {
26128
26443
  if (!params.taskId || !params.gateName) {
26129
26444
  return lafsError("E_INVALID_INPUT", "taskId and gateName are required", "stage.gate.pass");
26130
26445
  }
26131
- return wrapCoreResult(await coreOps2["stage.gate.pass"](params), "stage.gate.pass");
26446
+ return wrapCoreResult(await coreOps3["stage.gate.pass"](params), "stage.gate.pass");
26132
26447
  },
26133
26448
  "stage.gate.fail": async (params) => {
26134
26449
  if (!params.taskId || !params.gateName) {
26135
26450
  return lafsError("E_INVALID_INPUT", "taskId and gateName are required", "stage.gate.fail");
26136
26451
  }
26137
- return wrapCoreResult(await coreOps2["stage.gate.fail"](params), "stage.gate.fail");
26452
+ return wrapCoreResult(await coreOps3["stage.gate.fail"](params), "stage.gate.fail");
26138
26453
  },
26139
26454
  // -------------------------------------------------------------------------
26140
26455
  // Release queries
26141
26456
  // -------------------------------------------------------------------------
26142
26457
  "release.list": async (params) => {
26143
- const result = await coreOps2["release.list"](params);
26458
+ const result = await coreOps3["release.list"](params);
26144
26459
  if (!result.success) {
26145
26460
  return lafsError(
26146
26461
  String(result.error?.code ?? "E_INTERNAL"),
@@ -26157,16 +26472,16 @@ var init_pipeline3 = __esm({
26157
26472
  if (!params.version) {
26158
26473
  return lafsError("E_INVALID_INPUT", "version is required", "release.show");
26159
26474
  }
26160
- return wrapCoreResult(await coreOps2["release.show"](params), "release.show");
26475
+ return wrapCoreResult(await coreOps3["release.show"](params), "release.show");
26161
26476
  },
26162
26477
  // Always succeeds (git branch detection falls back to 'unknown') — no error path.
26163
- "release.channel.show": async (_params) => lafsSuccess((await coreOps2["release.channel.show"](_params)).data, "release.channel.show"),
26478
+ "release.channel.show": async (_params) => lafsSuccess((await coreOps3["release.channel.show"](_params)).data, "release.channel.show"),
26164
26479
  "release.changelog.since": async (params) => {
26165
26480
  if (!params.sinceTag) {
26166
26481
  return lafsError("E_INVALID_INPUT", "sinceTag is required", "release.changelog.since");
26167
26482
  }
26168
26483
  return wrapCoreResult(
26169
- await coreOps2["release.changelog.since"](params),
26484
+ await coreOps3["release.changelog.since"](params),
26170
26485
  "release.changelog.since"
26171
26486
  );
26172
26487
  },
@@ -26177,32 +26492,32 @@ var init_pipeline3 = __esm({
26177
26492
  if (!params.version || !params.epicId) {
26178
26493
  return lafsError("E_INVALID_INPUT", "version and epicId are required", "release.ship");
26179
26494
  }
26180
- return wrapCoreResult(await coreOps2["release.ship"](params), "release.ship");
26495
+ return wrapCoreResult(await coreOps3["release.ship"](params), "release.ship");
26181
26496
  },
26182
26497
  // release.pr-status — T9095 query: poll CI checks for an in-progress release PR
26183
26498
  "release.pr-status": async (params) => {
26184
26499
  if (!params.version) {
26185
26500
  return lafsError("E_INVALID_INPUT", "version is required", "release.pr-status");
26186
26501
  }
26187
- return wrapCoreResult(await coreOps2["release.pr-status"](params), "release.pr-status");
26502
+ return wrapCoreResult(await coreOps3["release.pr-status"](params), "release.pr-status");
26188
26503
  },
26189
26504
  "release.cancel": async (params) => {
26190
26505
  if (!params.version) {
26191
26506
  return lafsError("E_INVALID_INPUT", "version is required", "release.cancel");
26192
26507
  }
26193
- return wrapCoreResult(await coreOps2["release.cancel"](params), "release.cancel");
26508
+ return wrapCoreResult(await coreOps3["release.cancel"](params), "release.cancel");
26194
26509
  },
26195
26510
  "release.rollback": async (params) => {
26196
26511
  if (!params.version) {
26197
26512
  return lafsError("E_INVALID_INPUT", "version is required", "release.rollback");
26198
26513
  }
26199
- return wrapCoreResult(await coreOps2["release.rollback"](params), "release.rollback");
26514
+ return wrapCoreResult(await coreOps3["release.rollback"](params), "release.rollback");
26200
26515
  },
26201
26516
  "release.rollback.full": async (params) => {
26202
26517
  if (!params.version) {
26203
26518
  return lafsError("E_INVALID_INPUT", "version is required", "release.rollback.full");
26204
26519
  }
26205
- return wrapCoreResult(await coreOps2["release.rollback.full"](params), "release.rollback.full");
26520
+ return wrapCoreResult(await coreOps3["release.rollback.full"](params), "release.rollback.full");
26206
26521
  },
26207
26522
  // -------------------------------------------------------------------------
26208
26523
  // Manifest queries
@@ -26211,10 +26526,10 @@ var init_pipeline3 = __esm({
26211
26526
  if (!params.entryId) {
26212
26527
  return lafsError("E_INVALID_INPUT", "entryId is required", "manifest.show");
26213
26528
  }
26214
- return wrapCoreResult(await coreOps2["manifest.show"](params), "manifest.show");
26529
+ return wrapCoreResult(await coreOps3["manifest.show"](params), "manifest.show");
26215
26530
  },
26216
26531
  "manifest.list": async (params) => {
26217
- const result = await coreOps2["manifest.list"](params);
26532
+ const result = await coreOps3["manifest.list"](params);
26218
26533
  if (!result.success) {
26219
26534
  return lafsError(
26220
26535
  String(result.error?.code ?? "E_INTERNAL"),
@@ -26231,9 +26546,9 @@ var init_pipeline3 = __esm({
26231
26546
  if (!params.query) {
26232
26547
  return lafsError("E_INVALID_INPUT", "query is required", "manifest.find");
26233
26548
  }
26234
- return wrapCoreResult(await coreOps2["manifest.find"](params), "manifest.find");
26549
+ return wrapCoreResult(await coreOps3["manifest.find"](params), "manifest.find");
26235
26550
  },
26236
- "manifest.stats": async (params) => wrapCoreResult(await coreOps2["manifest.stats"](params), "manifest.stats"),
26551
+ "manifest.stats": async (params) => wrapCoreResult(await coreOps3["manifest.stats"](params), "manifest.stats"),
26237
26552
  // -------------------------------------------------------------------------
26238
26553
  // Manifest mutations
26239
26554
  // -------------------------------------------------------------------------
@@ -26241,7 +26556,7 @@ var init_pipeline3 = __esm({
26241
26556
  if (!params.entry) {
26242
26557
  return lafsError("E_INVALID_INPUT", "entry is required", "manifest.append");
26243
26558
  }
26244
- return wrapCoreResult(await coreOps2["manifest.append"](params), "manifest.append");
26559
+ return wrapCoreResult(await coreOps3["manifest.append"](params), "manifest.append");
26245
26560
  },
26246
26561
  "manifest.archive": async (params) => {
26247
26562
  if (!params.beforeDate) {
@@ -26251,14 +26566,14 @@ var init_pipeline3 = __esm({
26251
26566
  "manifest.archive"
26252
26567
  );
26253
26568
  }
26254
- return wrapCoreResult(await coreOps2["manifest.archive"](params), "manifest.archive");
26569
+ return wrapCoreResult(await coreOps3["manifest.archive"](params), "manifest.archive");
26255
26570
  },
26256
26571
  // -------------------------------------------------------------------------
26257
26572
  // Phase queries
26258
26573
  // -------------------------------------------------------------------------
26259
- "phase.show": async (params) => wrapCoreResult(await coreOps2["phase.show"](params), "phase.show"),
26574
+ "phase.show": async (params) => wrapCoreResult(await coreOps3["phase.show"](params), "phase.show"),
26260
26575
  // Pagination is applied in PipelineHandler.query() for phase.list.
26261
- "phase.list": async (_params) => wrapCoreResult(await coreOps2["phase.list"](_params), "phase.list"),
26576
+ "phase.list": async (_params) => wrapCoreResult(await coreOps3["phase.list"](_params), "phase.list"),
26262
26577
  // -------------------------------------------------------------------------
26263
26578
  // Phase mutations
26264
26579
  // -------------------------------------------------------------------------
@@ -26266,20 +26581,20 @@ var init_pipeline3 = __esm({
26266
26581
  if (!params.phaseId) {
26267
26582
  return lafsError("E_INVALID_INPUT", "phaseId is required", "phase.set");
26268
26583
  }
26269
- return wrapCoreResult(await coreOps2["phase.set"](params), "phase.set");
26584
+ return wrapCoreResult(await coreOps3["phase.set"](params), "phase.set");
26270
26585
  },
26271
- "phase.advance": async (params) => wrapCoreResult(await coreOps2["phase.advance"](params), "phase.advance"),
26586
+ "phase.advance": async (params) => wrapCoreResult(await coreOps3["phase.advance"](params), "phase.advance"),
26272
26587
  "phase.rename": async (params) => {
26273
26588
  if (!params.oldName || !params.newName) {
26274
26589
  return lafsError("E_INVALID_INPUT", "oldName and newName are required", "phase.rename");
26275
26590
  }
26276
- return wrapCoreResult(await coreOps2["phase.rename"](params), "phase.rename");
26591
+ return wrapCoreResult(await coreOps3["phase.rename"](params), "phase.rename");
26277
26592
  },
26278
26593
  "phase.delete": async (params) => {
26279
26594
  if (!params.phaseId) {
26280
26595
  return lafsError("E_INVALID_INPUT", "phaseId is required", "phase.delete");
26281
26596
  }
26282
- return wrapCoreResult(await coreOps2["phase.delete"](params), "phase.delete");
26597
+ return wrapCoreResult(await coreOps3["phase.delete"](params), "phase.delete");
26283
26598
  },
26284
26599
  // -------------------------------------------------------------------------
26285
26600
  // Chain queries
@@ -26288,14 +26603,14 @@ var init_pipeline3 = __esm({
26288
26603
  if (!params.chainId) {
26289
26604
  return lafsError("E_INVALID_INPUT", "chainId is required", "chain.show");
26290
26605
  }
26291
- const { _chain, _chainId } = await coreOps2["chain.show"](params);
26606
+ const { _chain, _chainId } = await coreOps3["chain.show"](params);
26292
26607
  if (!_chain) {
26293
26608
  return lafsError("E_NOT_FOUND", `Chain "${_chainId}" not found`, "chain.show");
26294
26609
  }
26295
26610
  return lafsSuccess(_chain, "chain.show");
26296
26611
  },
26297
26612
  "chain.list": async (params) => {
26298
- return lafsSuccess(await coreOps2["chain.list"](params), "chain.list");
26613
+ return lafsSuccess(await coreOps3["chain.list"](params), "chain.list");
26299
26614
  },
26300
26615
  // -------------------------------------------------------------------------
26301
26616
  // Chain mutations
@@ -26304,14 +26619,14 @@ var init_pipeline3 = __esm({
26304
26619
  if (!params.chain) {
26305
26620
  return lafsError("E_INVALID_INPUT", "chain is required", "chain.add");
26306
26621
  }
26307
- return lafsSuccess(await coreOps2["chain.add"](params), "chain.add");
26622
+ return lafsSuccess(await coreOps3["chain.add"](params), "chain.add");
26308
26623
  },
26309
26624
  "chain.instantiate": async (params) => {
26310
26625
  if (!params.chainId || !params.epicId) {
26311
26626
  return lafsError("E_INVALID_INPUT", "chainId and epicId are required", "chain.instantiate");
26312
26627
  }
26313
26628
  try {
26314
- return lafsSuccess(await coreOps2["chain.instantiate"](params), "chain.instantiate");
26629
+ return lafsSuccess(await coreOps3["chain.instantiate"](params), "chain.instantiate");
26315
26630
  } catch (error) {
26316
26631
  const message = error instanceof Error ? error.message : String(error);
26317
26632
  if (message.includes(`Chain "${params.chainId}" not found`) || message.includes("FOREIGN KEY constraint failed") || message.includes("SQLITE_CONSTRAINT_FOREIGNKEY")) {
@@ -26324,7 +26639,7 @@ var init_pipeline3 = __esm({
26324
26639
  if (!params.instanceId || !params.nextStage) {
26325
26640
  return lafsError("E_INVALID_INPUT", "instanceId and nextStage are required", "chain.advance");
26326
26641
  }
26327
- return lafsSuccess(await coreOps2["chain.advance"](params), "chain.advance");
26642
+ return lafsSuccess(await coreOps3["chain.advance"](params), "chain.advance");
26328
26643
  }
26329
26644
  });
26330
26645
  PipelineHandler = class {
@@ -26500,7 +26815,7 @@ async function releaseGateOp(params) {
26500
26815
  async function releaseIvtrSuggestOp(params) {
26501
26816
  return releaseIvtrAutoSuggest(params.taskId, getProjectRoot11());
26502
26817
  }
26503
- var log2, coreOps3, ReleaseHandler;
26818
+ var log2, coreOps4, ReleaseHandler;
26504
26819
  var init_release2 = __esm({
26505
26820
  "packages/cleo/src/dispatch/domains/release.ts"() {
26506
26821
  "use strict";
@@ -26508,7 +26823,7 @@ var init_release2 = __esm({
26508
26823
  init_base();
26509
26824
  init_meta2();
26510
26825
  log2 = getLogger11("domain:release");
26511
- coreOps3 = {
26826
+ coreOps4 = {
26512
26827
  gate: releaseGateOp,
26513
26828
  "ivtr-suggest": releaseIvtrSuggestOp
26514
26829
  };
@@ -26542,7 +26857,7 @@ var init_release2 = __esm({
26542
26857
  );
26543
26858
  const force = typeof params?.force === "boolean" ? params.force : false;
26544
26859
  const typed = { epicId, force };
26545
- return wrapResult(await coreOps3.gate(typed), "query", "release", operation, startTime);
26860
+ return wrapResult(await coreOps4.gate(typed), "query", "release", operation, startTime);
26546
26861
  }
26547
26862
  // release.ivtr-suggest — IVTR auto-suggest (RELEASE-07)
26548
26863
  case "ivtr-suggest": {
@@ -26558,7 +26873,7 @@ var init_release2 = __esm({
26558
26873
  );
26559
26874
  const typed = { taskId };
26560
26875
  return wrapResult(
26561
- await coreOps3["ivtr-suggest"](typed),
26876
+ await coreOps4["ivtr-suggest"](typed),
26562
26877
  "query",
26563
26878
  "release",
26564
26879
  operation,
@@ -26618,7 +26933,7 @@ var init_release2 = __esm({
26618
26933
  );
26619
26934
  const force = typeof params?.force === "boolean" ? params.force : false;
26620
26935
  const typed = { epicId, force };
26621
- return wrapResult(await coreOps3.gate(typed), "mutate", "release", operation, startTime);
26936
+ return wrapResult(await coreOps4.gate(typed), "mutate", "release", operation, startTime);
26622
26937
  }
26623
26938
  // release.ivtr-suggest — IVTR auto-suggest (RELEASE-07, no DB writes)
26624
26939
  case "ivtr-suggest": {
@@ -26634,7 +26949,7 @@ var init_release2 = __esm({
26634
26949
  );
26635
26950
  const typed = { taskId };
26636
26951
  return wrapResult(
26637
- await coreOps3["ivtr-suggest"](typed),
26952
+ await coreOps4["ivtr-suggest"](typed),
26638
26953
  "mutate",
26639
26954
  "release",
26640
26955
  operation,
@@ -26723,13 +27038,13 @@ import {
26723
27038
  sentientProposeReject,
26724
27039
  sentientProposeRun
26725
27040
  } from "@cleocode/core/sentient";
26726
- var coreOps4, _sentientTypedHandler, QUERY_OPS6, MUTATE_OPS6, SentientHandler;
27041
+ var coreOps5, _sentientTypedHandler, QUERY_OPS7, MUTATE_OPS7, SentientHandler;
26727
27042
  var init_sentient2 = __esm({
26728
27043
  "packages/cleo/src/dispatch/domains/sentient.ts"() {
26729
27044
  "use strict";
26730
27045
  init_typed();
26731
27046
  init_base();
26732
- coreOps4 = {
27047
+ coreOps5 = {
26733
27048
  "propose.list": (params) => sentientProposeList(getProjectRoot12(), params),
26734
27049
  "propose.diff": (params) => sentientProposeDiff(getProjectRoot12(), params),
26735
27050
  "allowlist.list": (params) => sentientAllowlistList(getProjectRoot12(), params),
@@ -26747,7 +27062,7 @@ var init_sentient2 = __esm({
26747
27062
  // -------------------------------------------------------------------------
26748
27063
  "propose.list": async (params) => {
26749
27064
  try {
26750
- const data = await coreOps4["propose.list"](params);
27065
+ const data = await coreOps5["propose.list"](params);
26751
27066
  return lafsSuccess(data, "propose.list");
26752
27067
  } catch (err) {
26753
27068
  const message = err instanceof Error ? err.message : String(err);
@@ -26756,7 +27071,7 @@ var init_sentient2 = __esm({
26756
27071
  },
26757
27072
  "propose.diff": async (params) => {
26758
27073
  try {
26759
- const data = await coreOps4["propose.diff"](params);
27074
+ const data = await coreOps5["propose.diff"](params);
26760
27075
  return lafsSuccess(data, "propose.diff");
26761
27076
  } catch (err) {
26762
27077
  const message = err instanceof Error ? err.message : String(err);
@@ -26765,7 +27080,7 @@ var init_sentient2 = __esm({
26765
27080
  },
26766
27081
  "allowlist.list": async (_params) => {
26767
27082
  try {
26768
- const data = await coreOps4["allowlist.list"](_params);
27083
+ const data = await coreOps5["allowlist.list"](_params);
26769
27084
  return lafsSuccess(data, "allowlist.list");
26770
27085
  } catch (err) {
26771
27086
  const message = err instanceof Error ? err.message : String(err);
@@ -26777,7 +27092,7 @@ var init_sentient2 = __esm({
26777
27092
  // -------------------------------------------------------------------------
26778
27093
  "propose.accept": async (params) => {
26779
27094
  try {
26780
- const data = await coreOps4["propose.accept"](params);
27095
+ const data = await coreOps5["propose.accept"](params);
26781
27096
  return lafsSuccess(data, "propose.accept");
26782
27097
  } catch (err) {
26783
27098
  const code = err.code ?? "E_INTERNAL";
@@ -26787,7 +27102,7 @@ var init_sentient2 = __esm({
26787
27102
  },
26788
27103
  "propose.reject": async (params) => {
26789
27104
  try {
26790
- const data = await coreOps4["propose.reject"](params);
27105
+ const data = await coreOps5["propose.reject"](params);
26791
27106
  return lafsSuccess(data, "propose.reject");
26792
27107
  } catch (err) {
26793
27108
  const code = err.code ?? "E_INTERNAL";
@@ -26797,7 +27112,7 @@ var init_sentient2 = __esm({
26797
27112
  },
26798
27113
  "propose.run": async (_params) => {
26799
27114
  try {
26800
- const data = await coreOps4["propose.run"](_params);
27115
+ const data = await coreOps5["propose.run"](_params);
26801
27116
  return lafsSuccess(data, "propose.run");
26802
27117
  } catch (err) {
26803
27118
  const message = err instanceof Error ? err.message : String(err);
@@ -26806,7 +27121,7 @@ var init_sentient2 = __esm({
26806
27121
  },
26807
27122
  "propose.enable": async (_params) => {
26808
27123
  try {
26809
- const data = await coreOps4["propose.enable"](_params);
27124
+ const data = await coreOps5["propose.enable"](_params);
26810
27125
  return lafsSuccess(data, "propose.enable");
26811
27126
  } catch (err) {
26812
27127
  const code = err.code ?? "E_INTERNAL";
@@ -26816,7 +27131,7 @@ var init_sentient2 = __esm({
26816
27131
  },
26817
27132
  "propose.disable": async (_params) => {
26818
27133
  try {
26819
- const data = await coreOps4["propose.disable"](_params);
27134
+ const data = await coreOps5["propose.disable"](_params);
26820
27135
  return lafsSuccess(data, "propose.disable");
26821
27136
  } catch (err) {
26822
27137
  const message = err instanceof Error ? err.message : String(err);
@@ -26825,7 +27140,7 @@ var init_sentient2 = __esm({
26825
27140
  },
26826
27141
  "allowlist.add": async (params) => {
26827
27142
  try {
26828
- const data = await coreOps4["allowlist.add"](params);
27143
+ const data = await coreOps5["allowlist.add"](params);
26829
27144
  return lafsSuccess(data, "allowlist.add");
26830
27145
  } catch (err) {
26831
27146
  const message = err instanceof Error ? err.message : String(err);
@@ -26834,7 +27149,7 @@ var init_sentient2 = __esm({
26834
27149
  },
26835
27150
  "allowlist.remove": async (params) => {
26836
27151
  try {
26837
- const data = await coreOps4["allowlist.remove"](params);
27152
+ const data = await coreOps5["allowlist.remove"](params);
26838
27153
  return lafsSuccess(data, "allowlist.remove");
26839
27154
  } catch (err) {
26840
27155
  const code = err.code === "E_ALLOWLIST_KEY_NOT_FOUND" ? "E_ALLOWLIST_KEY_NOT_FOUND" : "E_ALLOWLIST_REMOVE";
@@ -26843,8 +27158,8 @@ var init_sentient2 = __esm({
26843
27158
  }
26844
27159
  }
26845
27160
  });
26846
- QUERY_OPS6 = /* @__PURE__ */ new Set(["propose.list", "propose.diff", "allowlist.list"]);
26847
- MUTATE_OPS6 = /* @__PURE__ */ new Set([
27161
+ QUERY_OPS7 = /* @__PURE__ */ new Set(["propose.list", "propose.diff", "allowlist.list"]);
27162
+ MUTATE_OPS7 = /* @__PURE__ */ new Set([
26848
27163
  "propose.accept",
26849
27164
  "propose.reject",
26850
27165
  "propose.run",
@@ -26877,7 +27192,7 @@ var init_sentient2 = __esm({
26877
27192
  */
26878
27193
  async query(operation, params) {
26879
27194
  const startTime = Date.now();
26880
- if (!QUERY_OPS6.has(operation)) {
27195
+ if (!QUERY_OPS7.has(operation)) {
26881
27196
  return unsupportedOp("query", "sentient", operation, startTime);
26882
27197
  }
26883
27198
  try {
@@ -26905,7 +27220,7 @@ var init_sentient2 = __esm({
26905
27220
  */
26906
27221
  async mutate(operation, params) {
26907
27222
  const startTime = Date.now();
26908
- if (!MUTATE_OPS6.has(operation)) {
27223
+ if (!MUTATE_OPS7.has(operation)) {
26909
27224
  return unsupportedOp("mutate", "sentient", operation, startTime);
26910
27225
  }
26911
27226
  try {
@@ -27033,7 +27348,7 @@ async function storeSessionOwnerAuthToken(projectRoot, sessionId, token) {
27033
27348
  const db = await getDb(projectRoot);
27034
27349
  db.update(sessions).set({ ownerAuthToken: token }).where(eq(sessions.id, sessionId)).run();
27035
27350
  }
27036
- var coreOps5, _sessionTypedHandler, QUERY_OPS7, MUTATE_OPS7, SessionHandler;
27351
+ var coreOps6, _sessionTypedHandler, QUERY_OPS8, MUTATE_OPS8, SessionHandler;
27037
27352
  var init_session3 = __esm({
27038
27353
  "packages/cleo/src/dispatch/domains/session.ts"() {
27039
27354
  "use strict";
@@ -27041,7 +27356,7 @@ var init_session3 = __esm({
27041
27356
  init_session_context();
27042
27357
  init_engine();
27043
27358
  init_base();
27044
- coreOps5 = {
27359
+ coreOps6 = {
27045
27360
  status: sessionStatusOp,
27046
27361
  list: sessionListOp,
27047
27362
  show: sessionShowOp,
@@ -27064,19 +27379,19 @@ var init_session3 = __esm({
27064
27379
  // -------------------------------------------------------------------------
27065
27380
  // Engine guarantees data on success; fallback mirrors empty-state shape.
27066
27381
  // overrideCount included per T1501 / P0-5.
27067
- status: async (_params) => wrapCoreResult(await coreOps5.status(), "status", {
27382
+ status: async (_params) => wrapCoreResult(await coreOps6.status(), "status", {
27068
27383
  hasActiveSession: false,
27069
27384
  session: null,
27070
27385
  taskWork: null,
27071
27386
  overrideCount: 0
27072
27387
  }),
27073
- list: async (params) => wrapCoreResult(await coreOps5.list(params), "list"),
27388
+ list: async (params) => wrapCoreResult(await coreOps6.list(params), "list"),
27074
27389
  // session.show absorbs debrief.show via include param (T5615)
27075
27390
  show: async (params) => {
27076
27391
  if (!params.sessionId) {
27077
27392
  return lafsError("E_INVALID_INPUT", "sessionId is required", "show");
27078
27393
  }
27079
- const result = await coreOps5.show(params);
27394
+ const result = await coreOps6.show(params);
27080
27395
  if (!result.success) {
27081
27396
  return lafsError(
27082
27397
  String(result.error?.code ?? "E_INTERNAL"),
@@ -27090,7 +27405,7 @@ var init_session3 = __esm({
27090
27405
  return lafsSuccess(result.data, "show");
27091
27406
  },
27092
27407
  find: async (params) => {
27093
- const result = await coreOps5.find(params);
27408
+ const result = await coreOps6.find(params);
27094
27409
  if (!result.success) {
27095
27410
  return lafsError(
27096
27411
  String(result.error?.code ?? "E_INTERNAL"),
@@ -27100,16 +27415,16 @@ var init_session3 = __esm({
27100
27415
  }
27101
27416
  return lafsSuccess({ sessions: result.data ?? [] }, "find");
27102
27417
  },
27103
- "decision.log": async (params) => wrapCoreResult(await coreOps5["decision.log"](params), "decision.log", []),
27418
+ "decision.log": async (params) => wrapCoreResult(await coreOps6["decision.log"](params), "decision.log", []),
27104
27419
  "context.drift": async (params) => {
27105
- const result = await coreOps5["context.drift"](params);
27420
+ const result = await coreOps6["context.drift"](params);
27106
27421
  if (result.success && !result.data) {
27107
27422
  return lafsError("E_INTERNAL", "context.drift returned no data", "context.drift");
27108
27423
  }
27109
27424
  return wrapCoreResult(result, "context.drift");
27110
27425
  },
27111
- "handoff.show": async (params) => wrapCoreResult(await coreOps5["handoff.show"](params), "handoff.show", null),
27112
- "briefing.show": async (params) => wrapCoreResult(await coreOps5["briefing.show"](params), "briefing.show"),
27426
+ "handoff.show": async (params) => wrapCoreResult(await coreOps6["handoff.show"](params), "handoff.show", null),
27427
+ "briefing.show": async (params) => wrapCoreResult(await coreOps6["briefing.show"](params), "briefing.show"),
27113
27428
  // -------------------------------------------------------------------------
27114
27429
  // Mutate ops
27115
27430
  // -------------------------------------------------------------------------
@@ -27120,7 +27435,7 @@ var init_session3 = __esm({
27120
27435
  if (!params.scope) {
27121
27436
  return lafsError("E_INVALID_INPUT", "scope is required", "start");
27122
27437
  }
27123
- const result = await coreOps5.start(params);
27438
+ const result = await coreOps6.start(params);
27124
27439
  if (!result.success) {
27125
27440
  return lafsError(
27126
27441
  String(result.error?.code ?? "E_INTERNAL"),
@@ -27166,7 +27481,7 @@ var init_session3 = __esm({
27166
27481
  // unbindSession (process-context teardown), refreshMemoryBridge — ADR-058
27167
27482
  end: async (params) => {
27168
27483
  const projectRoot = getProjectRoot13();
27169
- const endResult = await coreOps5.end(params);
27484
+ const endResult = await coreOps6.end(params);
27170
27485
  if (!endResult.success) {
27171
27486
  return lafsError(
27172
27487
  String(endResult.error?.code ?? "E_INTERNAL"),
@@ -27216,7 +27531,7 @@ var init_session3 = __esm({
27216
27531
  if (!params.sessionId) {
27217
27532
  return lafsError("E_INVALID_INPUT", "sessionId is required", "resume");
27218
27533
  }
27219
- const result = await coreOps5.resume(params);
27534
+ const result = await coreOps6.resume(params);
27220
27535
  if (result.success && !result.data) {
27221
27536
  return lafsError("E_NOT_FOUND", `Session ${params.sessionId} not found`, "resume");
27222
27537
  }
@@ -27226,30 +27541,30 @@ var init_session3 = __esm({
27226
27541
  if (!params.sessionId) {
27227
27542
  return lafsError("E_INVALID_INPUT", "sessionId is required", "suspend");
27228
27543
  }
27229
- const result = await coreOps5.suspend(params);
27544
+ const result = await coreOps6.suspend(params);
27230
27545
  if (result.success && !result.data) {
27231
27546
  return lafsError("E_NOT_FOUND", `Session ${params.sessionId} not found`, "suspend");
27232
27547
  }
27233
27548
  return wrapCoreResult(result, "suspend");
27234
27549
  },
27235
27550
  // Engine guarantees data on success; fallback for safety.
27236
- gc: async (params) => wrapCoreResult(await coreOps5.gc(params), "gc", { orphaned: [], removed: [] }),
27551
+ gc: async (params) => wrapCoreResult(await coreOps6.gc(params), "gc", { orphaned: [], removed: [] }),
27237
27552
  "record.decision": async (params) => {
27238
- const result = await coreOps5["record.decision"](params);
27553
+ const result = await coreOps6["record.decision"](params);
27239
27554
  if (result.success && !result.data) {
27240
27555
  return lafsError("E_INTERNAL", "record.decision returned no data", "record.decision");
27241
27556
  }
27242
27557
  return wrapCoreResult(result, "record.decision");
27243
27558
  },
27244
27559
  "record.assumption": async (params) => {
27245
- const result = await coreOps5["record.assumption"](params);
27560
+ const result = await coreOps6["record.assumption"](params);
27246
27561
  if (result.success && !result.data) {
27247
27562
  return lafsError("E_INTERNAL", "record.assumption returned no data", "record.assumption");
27248
27563
  }
27249
27564
  return wrapCoreResult(result, "record.assumption");
27250
27565
  }
27251
27566
  });
27252
- QUERY_OPS7 = /* @__PURE__ */ new Set([
27567
+ QUERY_OPS8 = /* @__PURE__ */ new Set([
27253
27568
  "status",
27254
27569
  "list",
27255
27570
  "show",
@@ -27259,7 +27574,7 @@ var init_session3 = __esm({
27259
27574
  "handoff.show",
27260
27575
  "briefing.show"
27261
27576
  ]);
27262
- MUTATE_OPS7 = /* @__PURE__ */ new Set([
27577
+ MUTATE_OPS8 = /* @__PURE__ */ new Set([
27263
27578
  "start",
27264
27579
  "end",
27265
27580
  "resume",
@@ -27280,7 +27595,7 @@ var init_session3 = __esm({
27280
27595
  */
27281
27596
  async query(operation, params) {
27282
27597
  const startTime = Date.now();
27283
- if (!QUERY_OPS7.has(operation)) {
27598
+ if (!QUERY_OPS8.has(operation)) {
27284
27599
  return unsupportedOp("query", "session", operation, startTime);
27285
27600
  }
27286
27601
  try {
@@ -27309,7 +27624,7 @@ var init_session3 = __esm({
27309
27624
  */
27310
27625
  async mutate(operation, params) {
27311
27626
  const startTime = Date.now();
27312
- if (!MUTATE_OPS7.has(operation)) {
27627
+ if (!MUTATE_OPS8.has(operation)) {
27313
27628
  return unsupportedOp("mutate", "session", operation, startTime);
27314
27629
  }
27315
27630
  try {
@@ -27442,7 +27757,7 @@ function envelopeToDispatch(envelope, gateway, operation, startTime) {
27442
27757
  }
27443
27758
  };
27444
27759
  }
27445
- var log3, stickyCoreOps, _stickyTypedHandler, QUERY_OPS8, MUTATE_OPS8, CONVERT_TARGET_TO_KEY, StickyHandler;
27760
+ var log3, stickyCoreOps, _stickyTypedHandler, QUERY_OPS9, MUTATE_OPS9, CONVERT_TARGET_TO_KEY, StickyHandler;
27446
27761
  var init_sticky2 = __esm({
27447
27762
  "packages/cleo/src/dispatch/domains/sticky.ts"() {
27448
27763
  "use strict";
@@ -27520,8 +27835,8 @@ var init_sticky2 = __esm({
27520
27835
  return data.taskId ? lafsSuccess(data, "convert.task_note") : lafsError("E_CONVERT_FAILED", "convert to task note failed", "convert.task_note");
27521
27836
  }
27522
27837
  });
27523
- QUERY_OPS8 = /* @__PURE__ */ new Set(["list", "show"]);
27524
- MUTATE_OPS8 = /* @__PURE__ */ new Set(["add", "convert", "archive", "purge"]);
27838
+ QUERY_OPS9 = /* @__PURE__ */ new Set(["list", "show"]);
27839
+ MUTATE_OPS9 = /* @__PURE__ */ new Set(["add", "convert", "archive", "purge"]);
27525
27840
  CONVERT_TARGET_TO_KEY = {
27526
27841
  task: "convert.task",
27527
27842
  memory: "convert.memory",
@@ -27531,7 +27846,7 @@ var init_sticky2 = __esm({
27531
27846
  StickyHandler = class {
27532
27847
  async query(operation, params) {
27533
27848
  const startTime = Date.now();
27534
- if (!QUERY_OPS8.has(operation)) {
27849
+ if (!QUERY_OPS9.has(operation)) {
27535
27850
  return unsupportedOp("query", "sticky", operation, startTime);
27536
27851
  }
27537
27852
  try {
@@ -27548,7 +27863,7 @@ var init_sticky2 = __esm({
27548
27863
  }
27549
27864
  async mutate(operation, params) {
27550
27865
  const startTime = Date.now();
27551
- if (!MUTATE_OPS8.has(operation)) {
27866
+ if (!MUTATE_OPS9.has(operation)) {
27552
27867
  return unsupportedOp("mutate", "sticky", operation, startTime);
27553
27868
  }
27554
27869
  try {
@@ -27591,7 +27906,7 @@ var init_sticky2 = __esm({
27591
27906
 
27592
27907
  // packages/cleo/src/dispatch/domains/tasks.ts
27593
27908
  import { getLogger as getLogger14, getProjectRoot as getProjectRoot15 } from "@cleocode/core";
27594
- var _tasksTypedHandler, QUERY_OPS9, MUTATE_OPS9, TasksHandler;
27909
+ var _tasksTypedHandler, QUERY_OPS10, MUTATE_OPS10, TasksHandler;
27595
27910
  var init_tasks3 = __esm({
27596
27911
  "packages/cleo/src/dispatch/domains/tasks.ts"() {
27597
27912
  "use strict";
@@ -27976,7 +28291,7 @@ var init_tasks3 = __esm({
27976
28291
  return wrapCoreResult(await taskUnclaim(projectRoot, params.taskId), "unclaim");
27977
28292
  }
27978
28293
  });
27979
- QUERY_OPS9 = /* @__PURE__ */ new Set([
28294
+ QUERY_OPS10 = /* @__PURE__ */ new Set([
27980
28295
  "show",
27981
28296
  "list",
27982
28297
  "find",
@@ -27996,7 +28311,7 @@ var init_tasks3 = __esm({
27996
28311
  "label.list",
27997
28312
  "sync.links"
27998
28313
  ]);
27999
- MUTATE_OPS9 = /* @__PURE__ */ new Set([
28314
+ MUTATE_OPS10 = /* @__PURE__ */ new Set([
28000
28315
  "add",
28001
28316
  "update",
28002
28317
  "complete",
@@ -28027,7 +28342,7 @@ var init_tasks3 = __esm({
28027
28342
  */
28028
28343
  async query(operation, params) {
28029
28344
  const startTime = Date.now();
28030
- if (!QUERY_OPS9.has(operation)) {
28345
+ if (!QUERY_OPS10.has(operation)) {
28031
28346
  return unsupportedOp("query", "tasks", operation, startTime);
28032
28347
  }
28033
28348
  if (operation === "impact" && !params?.change) {
@@ -28066,7 +28381,7 @@ var init_tasks3 = __esm({
28066
28381
  */
28067
28382
  async mutate(operation, params) {
28068
28383
  const startTime = Date.now();
28069
- if (!MUTATE_OPS9.has(operation)) {
28384
+ if (!MUTATE_OPS10.has(operation)) {
28070
28385
  return unsupportedOp("mutate", "tasks", operation, startTime);
28071
28386
  }
28072
28387
  try {
@@ -28721,6 +29036,7 @@ function createDomainHandlers() {
28721
29036
  handlers.set("conduit", new ConduitHandler());
28722
29037
  handlers.set("sentient", new SentientHandler());
28723
29038
  handlers.set("release", new ReleaseHandler());
29039
+ handlers.set("llm", new LlmHandler());
28724
29040
  return handlers;
28725
29041
  }
28726
29042
  var init_domains = __esm({
@@ -28732,6 +29048,7 @@ var init_domains = __esm({
28732
29048
  init_diagnostics();
28733
29049
  init_docs2();
28734
29050
  init_intelligence2();
29051
+ init_llm2();
28735
29052
  init_memory2();
28736
29053
  init_nexus3();
28737
29054
  init_orchestrate2();
@@ -43737,6 +44054,306 @@ var init_list = __esm({
43737
44054
  }
43738
44055
  });
43739
44056
 
44057
+ // packages/cleo/src/cli/commands/llm.ts
44058
+ var llm_exports = {};
44059
+ __export(llm_exports, {
44060
+ llmCommand: () => llmCommand
44061
+ });
44062
+ async function readApiKeyFromStdin() {
44063
+ if (process.stdin.isTTY) return "";
44064
+ process.stdin.setEncoding("utf-8");
44065
+ let buf = "";
44066
+ for await (const chunk of process.stdin) {
44067
+ buf += chunk;
44068
+ }
44069
+ return buf.replace(/\r?\n$/, "").trim();
44070
+ }
44071
+ function makeLlmSubcommand(opts) {
44072
+ const mergedArgs = {
44073
+ ...opts.args,
44074
+ json: {
44075
+ type: "boolean",
44076
+ description: "Output as JSON"
44077
+ }
44078
+ };
44079
+ return defineCommand({
44080
+ meta: { name: opts.name, description: opts.description },
44081
+ args: mergedArgs,
44082
+ async run({ args }) {
44083
+ const params = opts.paramBuilder(args);
44084
+ await dispatchFromCli(opts.gateway, "llm", opts.operation, params, opts.output);
44085
+ }
44086
+ });
44087
+ }
44088
+ var API_KEY_FLAG_DEPRECATION, addCommand5, listCommand10, removeCommand3, useCommand, profileCommand, testCommand, whoamiCommand, llmCommand;
44089
+ var init_llm3 = __esm({
44090
+ "packages/cleo/src/cli/commands/llm.ts"() {
44091
+ "use strict";
44092
+ init_dist();
44093
+ init_cli();
44094
+ API_KEY_FLAG_DEPRECATION = "[warning] --api-key exposes the secret to 'ps' listings and shell history. Prefer --api-key-stdin or --api-key-env=NAME for production use.";
44095
+ addCommand5 = defineCommand({
44096
+ meta: {
44097
+ name: "add",
44098
+ // Help text lists --api-key-stdin first (recommended path) and
44099
+ // --api-key last (deprecated). See S-11 in T9258 for the rationale.
44100
+ description: "Upsert a credential into the multi-credential pool. Reads the secret from stdin (--api-key-stdin, recommended), from an env var (--api-key-env=NAME), or as a literal flag value (--api-key, DEPRECATED \u2014 visible to ps + shell history). Auto-detects authType from token prefix (sk-ant-oat-* \u2192 oauth)."
44101
+ },
44102
+ args: {
44103
+ provider: {
44104
+ type: "positional",
44105
+ description: "Provider transport (anthropic | openai | gemini | moonshot)",
44106
+ required: true
44107
+ },
44108
+ // Recommended path — listed first to surface it in --help output.
44109
+ "api-key-stdin": {
44110
+ type: "boolean",
44111
+ description: '(recommended) Read the API key from stdin. Example: `echo "$KEY" | cleo llm add anthropic --api-key-stdin`. Not visible to `ps` listings or shell history.'
44112
+ },
44113
+ // Named-env mode — second-priority. Lets users put the key in a
44114
+ // .envrc / secret manager and reference it by name.
44115
+ "api-key-env": {
44116
+ type: "string",
44117
+ description: "Read the API key from the env var named here. Example: `cleo llm add anthropic --api-key-env=ANTHROPIC_API_KEY`."
44118
+ },
44119
+ // Deprecated literal-value mode — last in the help order. Backward
44120
+ // compat for CI scripts; emits a stderr warning when used.
44121
+ "api-key": {
44122
+ type: "string",
44123
+ description: "(DEPRECATED) API key or OAuth bearer token as a literal flag value. Exposes the secret to `ps` and shell history. Prefer --api-key-stdin or --api-key-env=NAME."
44124
+ },
44125
+ label: {
44126
+ type: "string",
44127
+ description: "Human-readable label, unique within provider (default: 'default')"
44128
+ },
44129
+ "base-url": {
44130
+ type: "string",
44131
+ description: "Optional override for the provider base URL"
44132
+ },
44133
+ "auth-type": {
44134
+ type: "string",
44135
+ description: "Explicit auth type override ('api_key' | 'oauth' | 'aws_sdk')"
44136
+ },
44137
+ priority: {
44138
+ type: "string",
44139
+ description: "Optional priority override (lower wins)"
44140
+ },
44141
+ json: {
44142
+ type: "boolean",
44143
+ description: "Output as JSON"
44144
+ }
44145
+ },
44146
+ async run({ args }) {
44147
+ const a = args;
44148
+ let apiKey = "";
44149
+ let source = "none";
44150
+ if (a["api-key-stdin"] === true) {
44151
+ apiKey = await readApiKeyFromStdin();
44152
+ source = "stdin";
44153
+ if (!apiKey) {
44154
+ process.stderr.write(
44155
+ '[error] --api-key-stdin set but stdin is empty or a TTY. Pipe the secret in, e.g. `echo "$KEY" | cleo llm add ...`.\n'
44156
+ );
44157
+ process.exit(2);
44158
+ }
44159
+ } else if (typeof a["api-key-env"] === "string" && a["api-key-env"]) {
44160
+ const envName = a["api-key-env"];
44161
+ const envValue = process.env[envName];
44162
+ if (!envValue) {
44163
+ process.stderr.write(`[error] --api-key-env=${envName} is not set in the environment.
44164
+ `);
44165
+ process.exit(2);
44166
+ }
44167
+ apiKey = envValue;
44168
+ source = "env";
44169
+ } else if (typeof a["api-key"] === "string" && a["api-key"]) {
44170
+ process.stderr.write(`${API_KEY_FLAG_DEPRECATION}
44171
+ `);
44172
+ apiKey = a["api-key"];
44173
+ source = "flag";
44174
+ } else {
44175
+ process.stderr.write(
44176
+ "[error] cleo llm add requires one of --api-key-stdin (recommended), --api-key-env=NAME, or --api-key=<value> (deprecated).\n"
44177
+ );
44178
+ process.exit(2);
44179
+ }
44180
+ const params = {
44181
+ provider: a["provider"],
44182
+ apiKey,
44183
+ _source: source
44184
+ // surfaces in audit logs for incident response
44185
+ };
44186
+ if (a["label"] !== void 0) params["label"] = a["label"];
44187
+ if (a["base-url"] !== void 0) params["baseUrl"] = a["base-url"];
44188
+ if (a["auth-type"] !== void 0) params["authType"] = a["auth-type"];
44189
+ if (a["priority"] !== void 0) params["priority"] = Number(a["priority"]);
44190
+ await dispatchFromCli("mutate", "llm", "add", params, {
44191
+ command: "llm-add",
44192
+ operation: "llm.add"
44193
+ });
44194
+ }
44195
+ });
44196
+ listCommand10 = makeLlmSubcommand({
44197
+ name: "list",
44198
+ description: "List redacted credentials from the multi-credential pool (tokens shown as last 4 chars only).",
44199
+ args: {
44200
+ provider: {
44201
+ type: "positional",
44202
+ description: "Optional provider filter",
44203
+ required: false
44204
+ }
44205
+ },
44206
+ gateway: "query",
44207
+ operation: "list",
44208
+ output: { command: "llm-list", operation: "llm.list" },
44209
+ paramBuilder: (args) => ({
44210
+ ...args["provider"] !== void 0 && args["provider"] !== "" ? { provider: args["provider"] } : {}
44211
+ })
44212
+ });
44213
+ removeCommand3 = makeLlmSubcommand({
44214
+ name: "remove",
44215
+ description: "Delete a (provider, label) credential pair from the pool.",
44216
+ args: {
44217
+ provider: {
44218
+ type: "positional",
44219
+ description: "Provider transport",
44220
+ required: true
44221
+ },
44222
+ label: {
44223
+ type: "string",
44224
+ description: "Label of the credential to remove",
44225
+ required: true
44226
+ }
44227
+ },
44228
+ gateway: "mutate",
44229
+ operation: "remove",
44230
+ output: { command: "llm-remove", operation: "llm.remove" },
44231
+ paramBuilder: (args) => ({
44232
+ provider: args["provider"],
44233
+ label: args["label"]
44234
+ })
44235
+ });
44236
+ useCommand = makeLlmSubcommand({
44237
+ name: "use",
44238
+ description: "Set llm.default.{provider,model} in the global config.",
44239
+ args: {
44240
+ provider: {
44241
+ type: "positional",
44242
+ description: "Provider transport to mark as default",
44243
+ required: true
44244
+ },
44245
+ model: {
44246
+ type: "string",
44247
+ description: "Optional default model identifier"
44248
+ }
44249
+ },
44250
+ gateway: "mutate",
44251
+ operation: "use",
44252
+ output: { command: "llm-use", operation: "llm.use" },
44253
+ paramBuilder: (args) => ({
44254
+ provider: args["provider"],
44255
+ ...args["model"] !== void 0 && { model: args["model"] }
44256
+ })
44257
+ });
44258
+ profileCommand = makeLlmSubcommand({
44259
+ name: "profile",
44260
+ description: "Pin a logical role (extraction | consolidation | derivation | hygiene | judgement) to a specific provider / model / credential label.",
44261
+ args: {
44262
+ role: {
44263
+ type: "positional",
44264
+ description: "Role name",
44265
+ required: true
44266
+ },
44267
+ provider: {
44268
+ type: "positional",
44269
+ description: "Provider transport for this role",
44270
+ required: true
44271
+ },
44272
+ model: {
44273
+ type: "string",
44274
+ description: "Optional model identifier for this role"
44275
+ },
44276
+ "credential-label": {
44277
+ type: "string",
44278
+ description: "Optional credential label to pin this role to a specific store entry"
44279
+ }
44280
+ },
44281
+ gateway: "mutate",
44282
+ operation: "profile",
44283
+ output: { command: "llm-profile", operation: "llm.profile" },
44284
+ paramBuilder: (args) => ({
44285
+ role: args["role"],
44286
+ provider: args["provider"],
44287
+ ...args["model"] !== void 0 && { model: args["model"] },
44288
+ ...args["credential-label"] !== void 0 && { credentialLabel: args["credential-label"] }
44289
+ })
44290
+ });
44291
+ testCommand = makeLlmSubcommand({
44292
+ name: "test",
44293
+ description: "Round-trip ping against the resolved provider (1-token prompt). Returns latency + response id; tokens never surfaced.",
44294
+ args: {
44295
+ provider: {
44296
+ type: "positional",
44297
+ description: "Provider transport to probe",
44298
+ required: true
44299
+ },
44300
+ label: {
44301
+ type: "string",
44302
+ description: "Credential label to pin the test to a specific store entry"
44303
+ },
44304
+ model: {
44305
+ type: "string",
44306
+ description: "Model override (defaults to the provider's implicit fallback)"
44307
+ }
44308
+ },
44309
+ gateway: "query",
44310
+ operation: "test",
44311
+ output: { command: "llm-test", operation: "llm.test" },
44312
+ paramBuilder: (args) => ({
44313
+ provider: args["provider"],
44314
+ ...args["label"] !== void 0 && { label: args["label"] },
44315
+ ...args["model"] !== void 0 && { model: args["model"] }
44316
+ })
44317
+ });
44318
+ whoamiCommand = makeLlmSubcommand({
44319
+ name: "whoami",
44320
+ description: "For each role, resolve and report which provider / model / credential would be picked today.",
44321
+ args: {
44322
+ role: {
44323
+ type: "string",
44324
+ description: "Optional role filter"
44325
+ }
44326
+ },
44327
+ gateway: "query",
44328
+ operation: "whoami",
44329
+ output: { command: "llm-whoami", operation: "llm.whoami" },
44330
+ paramBuilder: (args) => ({
44331
+ ...args["role"] !== void 0 && args["role"] !== "" ? { role: args["role"] } : {}
44332
+ })
44333
+ });
44334
+ llmCommand = defineCommand({
44335
+ meta: {
44336
+ name: "llm",
44337
+ description: "Manage LLM credentials, role profiles, and resolver diagnostics"
44338
+ },
44339
+ subCommands: {
44340
+ add: addCommand5,
44341
+ list: listCommand10,
44342
+ remove: removeCommand3,
44343
+ use: useCommand,
44344
+ profile: profileCommand,
44345
+ test: testCommand,
44346
+ whoami: whoamiCommand
44347
+ },
44348
+ async run({ cmd, rawArgs }) {
44349
+ const firstArg = rawArgs?.find((a) => !a.startsWith("-"));
44350
+ if (firstArg && cmd.subCommands && firstArg in cmd.subCommands) return;
44351
+ await showUsage(cmd);
44352
+ }
44353
+ });
44354
+ }
44355
+ });
44356
+
43740
44357
  // packages/cleo/src/cli/commands/log.ts
43741
44358
  var log_exports = {};
43742
44359
  __export(log_exports, {
@@ -43815,7 +44432,7 @@ async function readStdin() {
43815
44432
  process.stdin.on("error", reject);
43816
44433
  });
43817
44434
  }
43818
- var showCommand7, listCommand10, findCommand4, statsCommand3, appendCommand, archiveCommand2, manifestCommand;
44435
+ var showCommand7, listCommand11, findCommand4, statsCommand3, appendCommand, archiveCommand2, manifestCommand;
43819
44436
  var init_manifest = __esm({
43820
44437
  "packages/cleo/src/cli/commands/manifest.ts"() {
43821
44438
  "use strict";
@@ -43845,7 +44462,7 @@ var init_manifest = __esm({
43845
44462
  );
43846
44463
  }
43847
44464
  });
43848
- listCommand10 = defineCommand({
44465
+ listCommand11 = defineCommand({
43849
44466
  meta: {
43850
44467
  name: "list",
43851
44468
  description: "List manifest entries with optional filters"
@@ -44109,7 +44726,7 @@ var init_manifest = __esm({
44109
44726
  },
44110
44727
  subCommands: {
44111
44728
  show: showCommand7,
44112
- list: listCommand10,
44729
+ list: listCommand11,
44113
44730
  find: findCommand4,
44114
44731
  stats: statsCommand3,
44115
44732
  append: appendCommand,
@@ -46491,7 +47108,7 @@ function applyJsonFlag2(jsonFlag) {
46491
47108
  setFormatContext({ format: "json", source: "flag", quiet: false });
46492
47109
  }
46493
47110
  }
46494
- var initCommand3, registerCommand2, unregisterCommand, listCommand11, statusCommand8, showCommand8, resolveCommand2, discoverCommand2, augmentCommand2, setupCommand, searchCommand3, depsCommand3, criticalPathCommand2, blockingCommand, orphansCommand2, syncCommand5, reconcileCommand2, graphCommand3, shareStatusCommand, transferPreviewCommand, transferCommand, permissionSetCommand, permissionCommand, shareExportCommand, shareImportCommand, shareCommand, clustersCommand2, flowsCommand2, contextCommand4, impactCommand3, analyzeCommand3, projectsListCommand, projectsRegisterCommand, projectsRemoveCommand, projectsScanCommand, projectsCleanCommand, projectsCommand, refreshBridgeCommand, exportCommand6, diffCommand2, queryCommand2, routeMapCommand2, shapeCheckCommand2, fullContextCommand, taskFootprintCommand, brainAnchorsCommand, whyCommand, impactFullCommand2, conduitScanCommand, taskSymbolsCommand, searchCodeCommand2, contractsSyncCommand, contractsShowCommand, contractsLinkTasksCommand, contractsCommand, groupCommand, wikiCommand2, hotPathsCommand2, hotNodesCommand2, coldSymbolsCommand2, sigilSyncCommand, sigilListCommand, sigilCommand, topEntriesCommand, nexusCommand;
47111
+ var initCommand3, registerCommand2, unregisterCommand, listCommand12, statusCommand8, showCommand8, resolveCommand2, discoverCommand2, augmentCommand2, setupCommand, searchCommand3, depsCommand3, criticalPathCommand2, blockingCommand, orphansCommand2, syncCommand5, reconcileCommand2, graphCommand3, shareStatusCommand, transferPreviewCommand, transferCommand, permissionSetCommand, permissionCommand, shareExportCommand, shareImportCommand, shareCommand, clustersCommand2, flowsCommand2, contextCommand4, impactCommand3, analyzeCommand3, projectsListCommand, projectsRegisterCommand, projectsRemoveCommand, projectsScanCommand, projectsCleanCommand, projectsCommand, refreshBridgeCommand, exportCommand6, diffCommand2, queryCommand2, routeMapCommand2, shapeCheckCommand2, fullContextCommand, taskFootprintCommand, brainAnchorsCommand, whyCommand, impactFullCommand2, conduitScanCommand, taskSymbolsCommand, searchCodeCommand2, contractsSyncCommand, contractsShowCommand, contractsLinkTasksCommand, contractsCommand, groupCommand, wikiCommand2, hotPathsCommand2, hotNodesCommand2, coldSymbolsCommand2, sigilSyncCommand, sigilListCommand, sigilCommand, topEntriesCommand, nexusCommand;
46495
47112
  var init_nexus4 = __esm({
46496
47113
  "packages/cleo/src/cli/commands/nexus.ts"() {
46497
47114
  "use strict";
@@ -46556,7 +47173,7 @@ var init_nexus4 = __esm({
46556
47173
  );
46557
47174
  }
46558
47175
  });
46559
- listCommand11 = defineCommand({
47176
+ listCommand12 = defineCommand({
46560
47177
  meta: { name: "list", description: "List all registered projects" },
46561
47178
  async run() {
46562
47179
  await dispatchFromCli("query", "nexus", "list", {}, { command: "nexus" });
@@ -48951,7 +49568,7 @@ var init_nexus4 = __esm({
48951
49568
  init: initCommand3,
48952
49569
  register: registerCommand2,
48953
49570
  unregister: unregisterCommand,
48954
- list: listCommand11,
49571
+ list: listCommand12,
48955
49572
  status: statusCommand8,
48956
49573
  show: showCommand8,
48957
49574
  resolve: resolveCommand2,
@@ -50099,7 +50716,7 @@ var phase_exports = {};
50099
50716
  __export(phase_exports, {
50100
50717
  phaseCommand: () => phaseCommand
50101
50718
  });
50102
- var showCommand9, listCommand12, setCommand2, startCommand6, completeCommand3, advanceCommand2, renameCommand, deleteCommand2, phaseCommand;
50719
+ var showCommand9, listCommand13, setCommand2, startCommand6, completeCommand3, advanceCommand2, renameCommand, deleteCommand2, phaseCommand;
50103
50720
  var init_phase = __esm({
50104
50721
  "packages/cleo/src/cli/commands/phase.ts"() {
50105
50722
  "use strict";
@@ -50119,7 +50736,7 @@ var init_phase = __esm({
50119
50736
  await dispatchFromCli("query", "pipeline", "phase.show", params, { command: "phase" });
50120
50737
  }
50121
50738
  });
50122
- listCommand12 = defineCommand({
50739
+ listCommand13 = defineCommand({
50123
50740
  meta: { name: "list", description: "List all phases with status" },
50124
50741
  async run() {
50125
50742
  await dispatchFromCli("query", "pipeline", "phase.list", {}, { command: "phase" });
@@ -50277,7 +50894,7 @@ var init_phase = __esm({
50277
50894
  meta: { name: "phase", description: "Project-level phase lifecycle management" },
50278
50895
  subCommands: {
50279
50896
  show: showCommand9,
50280
- list: listCommand12,
50897
+ list: listCommand13,
50281
50898
  set: setCommand2,
50282
50899
  start: startCommand6,
50283
50900
  complete: completeCommand3,
@@ -50383,7 +51000,7 @@ var playbook_exports = {};
50383
51000
  __export(playbook_exports, {
50384
51001
  playbookCommand: () => playbookCommand
50385
51002
  });
50386
- var runCommand3, statusCommand11, resumeCommand, createCommand2, listCommand13, validateCommand7, playbookCommand;
51003
+ var runCommand3, statusCommand11, resumeCommand, createCommand2, listCommand14, validateCommand7, playbookCommand;
50387
51004
  var init_playbook3 = __esm({
50388
51005
  "packages/cleo/src/cli/commands/playbook.ts"() {
50389
51006
  "use strict";
@@ -50504,7 +51121,7 @@ var init_playbook3 = __esm({
50504
51121
  );
50505
51122
  }
50506
51123
  });
50507
- listCommand13 = defineCommand({
51124
+ listCommand14 = defineCommand({
50508
51125
  meta: {
50509
51126
  name: "list",
50510
51127
  description: "List playbook runs (optionally filter by status: active|completed|pending|failed|cancelled)"
@@ -50574,7 +51191,7 @@ var init_playbook3 = __esm({
50574
51191
  run: runCommand3,
50575
51192
  status: statusCommand11,
50576
51193
  resume: resumeCommand,
50577
- list: listCommand13,
51194
+ list: listCommand14,
50578
51195
  create: createCommand2,
50579
51196
  validate: validateCommand7
50580
51197
  },
@@ -50625,14 +51242,14 @@ var provider_exports = {};
50625
51242
  __export(provider_exports, {
50626
51243
  providerCommand: () => providerCommand
50627
51244
  });
50628
- var listCommand14, detectCommand3, injectStatusCommand, supportsCommand, hooksCommand, injectCommand2, providerCommand;
51245
+ var listCommand15, detectCommand3, injectStatusCommand, supportsCommand, hooksCommand, injectCommand2, providerCommand;
50629
51246
  var init_provider = __esm({
50630
51247
  "packages/cleo/src/cli/commands/provider.ts"() {
50631
51248
  "use strict";
50632
51249
  init_dist();
50633
51250
  init_cli();
50634
51251
  init_subcommand_guard();
50635
- listCommand14 = defineCommand({
51252
+ listCommand15 = defineCommand({
50636
51253
  meta: { name: "list", description: "List all registered CAAMP providers" },
50637
51254
  args: {
50638
51255
  limit: {
@@ -50790,7 +51407,7 @@ var init_provider = __esm({
50790
51407
  description: "CAAMP provider registry: list, detect, supports, hooks, inject"
50791
51408
  },
50792
51409
  subCommands: {
50793
- list: listCommand14,
51410
+ list: listCommand15,
50794
51411
  detect: detectCommand3,
50795
51412
  "inject-status": injectStatusCommand,
50796
51413
  supports: supportsCommand,
@@ -51029,7 +51646,7 @@ var relates_exports = {};
51029
51646
  __export(relates_exports, {
51030
51647
  relatesCommand: () => relatesCommand
51031
51648
  });
51032
- var suggestCommand2, addCommand5, discoverCommand3, removeCommand3, listCommand15, relatesCommand;
51649
+ var suggestCommand2, addCommand6, discoverCommand3, removeCommand4, listCommand16, relatesCommand;
51033
51650
  var init_relates = __esm({
51034
51651
  "packages/cleo/src/cli/commands/relates.ts"() {
51035
51652
  "use strict";
@@ -51060,7 +51677,7 @@ var init_relates = __esm({
51060
51677
  cliOutput(response.data ?? {}, { command: "relates" });
51061
51678
  }
51062
51679
  });
51063
- addCommand5 = defineCommand({
51680
+ addCommand6 = defineCommand({
51064
51681
  meta: {
51065
51682
  name: "add",
51066
51683
  description: "Add a relates entry to a task. Valid types: blocks|related|duplicates|absorbs|fixes|extends|supersedes"
@@ -51115,7 +51732,7 @@ var init_relates = __esm({
51115
51732
  cliOutput(response.data ?? {}, { command: "relates" });
51116
51733
  }
51117
51734
  });
51118
- removeCommand3 = defineCommand({
51735
+ removeCommand4 = defineCommand({
51119
51736
  meta: {
51120
51737
  name: "remove",
51121
51738
  description: "Remove a relates entry between two tasks"
@@ -51147,7 +51764,7 @@ var init_relates = __esm({
51147
51764
  );
51148
51765
  }
51149
51766
  });
51150
- listCommand15 = defineCommand({
51767
+ listCommand16 = defineCommand({
51151
51768
  meta: { name: "list", description: "Show existing relates entries for a task" },
51152
51769
  args: {
51153
51770
  taskId: {
@@ -51173,10 +51790,10 @@ var init_relates = __esm({
51173
51790
  },
51174
51791
  subCommands: {
51175
51792
  suggest: suggestCommand2,
51176
- add: addCommand5,
51177
- remove: removeCommand3,
51793
+ add: addCommand6,
51794
+ remove: removeCommand4,
51178
51795
  discover: discoverCommand3,
51179
- list: listCommand15
51796
+ list: listCommand16
51180
51797
  },
51181
51798
  async run({ cmd, rawArgs }) {
51182
51799
  const firstArg = rawArgs?.find((a) => !a.startsWith("-"));
@@ -51193,7 +51810,7 @@ __export(release_exports, {
51193
51810
  releaseCommand: () => releaseCommand
51194
51811
  });
51195
51812
  import { release as release2 } from "@cleocode/core";
51196
- var shipCommand, listCommand16, showCommand10, cancelCommand2, changelogCommand, rollbackCommand, rollbackFullCommand, prStatusCommand, channelCommand, startCommand7, verifyCommand2, publishCommand3, reconcileCommand4, releaseCommand;
51813
+ var shipCommand, listCommand17, showCommand10, cancelCommand2, changelogCommand, rollbackCommand, rollbackFullCommand, prStatusCommand, channelCommand, startCommand7, verifyCommand2, publishCommand3, reconcileCommand4, releaseCommand;
51197
51814
  var init_release3 = __esm({
51198
51815
  "packages/cleo/src/cli/commands/release.ts"() {
51199
51816
  "use strict";
@@ -51257,7 +51874,7 @@ var init_release3 = __esm({
51257
51874
  );
51258
51875
  }
51259
51876
  });
51260
- listCommand16 = defineCommand({
51877
+ listCommand17 = defineCommand({
51261
51878
  meta: { name: "list", description: "List all releases" },
51262
51879
  async run() {
51263
51880
  await dispatchFromCli("query", "pipeline", "release.list", {}, { command: "release" });
@@ -51472,7 +52089,7 @@ var init_release3 = __esm({
51472
52089
  meta: { name: "release", description: "Release lifecycle management" },
51473
52090
  subCommands: {
51474
52091
  ship: shipCommand,
51475
- list: listCommand16,
52092
+ list: listCommand17,
51476
52093
  show: showCommand10,
51477
52094
  cancel: cancelCommand2,
51478
52095
  changelog: changelogCommand,
@@ -51868,14 +52485,14 @@ var req_exports = {};
51868
52485
  __export(req_exports, {
51869
52486
  reqCommand: () => reqCommand
51870
52487
  });
51871
- var addCommand6, listCommand17, migrateCommand, reqCommand;
52488
+ var addCommand7, listCommand18, migrateCommand, reqCommand;
51872
52489
  var init_req = __esm({
51873
52490
  "packages/cleo/src/cli/commands/req.ts"() {
51874
52491
  "use strict";
51875
52492
  init_dist();
51876
52493
  init_cli();
51877
52494
  init_renderers();
51878
- addCommand6 = defineCommand({
52495
+ addCommand7 = defineCommand({
51879
52496
  meta: {
51880
52497
  name: "add",
51881
52498
  description: "Add a typed AcceptanceGate (with REQ-ID) to a task's acceptance array"
@@ -51910,7 +52527,7 @@ var init_req = __esm({
51910
52527
  await dispatchFromCli("mutate", "tasks", "req.add", { taskId, gate }, { command: "req add" });
51911
52528
  }
51912
52529
  });
51913
- listCommand17 = defineCommand({
52530
+ listCommand18 = defineCommand({
51914
52531
  meta: { name: "list", description: "List all REQ-ID-addressed acceptance gates on a task" },
51915
52532
  args: {
51916
52533
  "task-id": {
@@ -51955,8 +52572,8 @@ var init_req = __esm({
51955
52572
  reqCommand = defineCommand({
51956
52573
  meta: { name: "req", description: "Manage REQ-ID-addressable acceptance gates on tasks" },
51957
52574
  subCommands: {
51958
- add: addCommand6,
51959
- list: listCommand17,
52575
+ add: addCommand7,
52576
+ list: listCommand18,
51960
52577
  migrate: migrateCommand
51961
52578
  },
51962
52579
  async run({ cmd, rawArgs }) {
@@ -51976,14 +52593,14 @@ __export(research_exports, {
51976
52593
  function generateResearchId() {
51977
52594
  return `res_${Date.now()}`;
51978
52595
  }
51979
- var addCommand7, showCommand11, listCommand18, pendingCommand2, linkCommand2, updateCommand, statsCommand5, linksCommand, archiveCommand3, manifestCommand2, researchCommand;
52596
+ var addCommand8, showCommand11, listCommand19, pendingCommand2, linkCommand2, updateCommand, statsCommand5, linksCommand, archiveCommand3, manifestCommand2, researchCommand;
51980
52597
  var init_research2 = __esm({
51981
52598
  "packages/cleo/src/cli/commands/research.ts"() {
51982
52599
  "use strict";
51983
52600
  init_dist();
51984
52601
  init_cli();
51985
52602
  init_renderers();
51986
- addCommand7 = defineCommand({
52603
+ addCommand8 = defineCommand({
51987
52604
  meta: { name: "add", description: "Add a research entry" },
51988
52605
  args: {
51989
52606
  task: {
@@ -52058,7 +52675,7 @@ var init_research2 = __esm({
52058
52675
  );
52059
52676
  }
52060
52677
  });
52061
- listCommand18 = defineCommand({
52678
+ listCommand19 = defineCommand({
52062
52679
  meta: { name: "list", description: "List research entries" },
52063
52680
  args: {
52064
52681
  task: {
@@ -52292,9 +52909,9 @@ var init_research2 = __esm({
52292
52909
  researchCommand = defineCommand({
52293
52910
  meta: { name: "research", description: "Research commands and manifest operations" },
52294
52911
  subCommands: {
52295
- add: addCommand7,
52912
+ add: addCommand8,
52296
52913
  show: showCommand11,
52297
- list: listCommand18,
52914
+ list: listCommand19,
52298
52915
  pending: pendingCommand2,
52299
52916
  link: linkCommand2,
52300
52917
  update: updateCommand,
@@ -54541,7 +55158,7 @@ async function promptOwnerAuthPassword(sessionName) {
54541
55158
  const token = deriveOwnerAuthToken(sessionName, password);
54542
55159
  return token;
54543
55160
  }
54544
- var startCommand8, endCommand, handoffCommand2, statusCommand12, resumeCommand2, findCommand6, listCommand19, gcCommand2, showCommand13, driftCommand, contextDriftCommand, suspendCommand, recordAssumptionCommand, recordDecisionCommand, decisionLogCommand, sessionCommand;
55161
+ var startCommand8, endCommand, handoffCommand2, statusCommand12, resumeCommand2, findCommand6, listCommand20, gcCommand2, showCommand13, driftCommand, contextDriftCommand, suspendCommand, recordAssumptionCommand, recordDecisionCommand, decisionLogCommand, sessionCommand;
54545
55162
  var init_session4 = __esm({
54546
55163
  "packages/cleo/src/cli/commands/session.ts"() {
54547
55164
  "use strict";
@@ -54807,7 +55424,7 @@ var init_session4 = __esm({
54807
55424
  );
54808
55425
  }
54809
55426
  });
54810
- listCommand19 = defineCommand({
55427
+ listCommand20 = defineCommand({
54811
55428
  meta: { name: "list", description: "List sessions" },
54812
55429
  args: {
54813
55430
  status: {
@@ -55072,7 +55689,7 @@ var init_session4 = __esm({
55072
55689
  status: statusCommand12,
55073
55690
  resume: resumeCommand2,
55074
55691
  find: findCommand6,
55075
- list: listCommand19,
55692
+ list: listCommand20,
55076
55693
  gc: gcCommand2,
55077
55694
  show: showCommand13,
55078
55695
  "context-drift": contextDriftCommand,
@@ -55131,14 +55748,14 @@ var skills_exports = {};
55131
55748
  __export(skills_exports, {
55132
55749
  skillsCommand: () => skillsCommand2
55133
55750
  });
55134
- var listCommand20, searchCommand4, validateCommand8, infoCommand, installCommand3, uninstallCommand2, enableCommand2, disableCommand2, refreshCommand, dispatchCommand, catalogCommand, precedenceCommand, depsCommand4, spawnProvidersCommand, skillsCommand2;
55751
+ var listCommand21, searchCommand4, validateCommand8, infoCommand, installCommand3, uninstallCommand2, enableCommand2, disableCommand2, refreshCommand, dispatchCommand, catalogCommand, precedenceCommand, depsCommand4, spawnProvidersCommand, skillsCommand2;
55135
55752
  var init_skills2 = __esm({
55136
55753
  "packages/cleo/src/cli/commands/skills.ts"() {
55137
55754
  "use strict";
55138
55755
  init_dist();
55139
55756
  init_cli();
55140
55757
  init_subcommand_guard();
55141
- listCommand20 = defineCommand({
55758
+ listCommand21 = defineCommand({
55142
55759
  meta: { name: "list", description: "List installed skills" },
55143
55760
  args: {
55144
55761
  global: {
@@ -55453,7 +56070,7 @@ var init_skills2 = __esm({
55453
56070
  skillsCommand2 = defineCommand({
55454
56071
  meta: { name: "skills", description: "Skill management: list, search, validate, info, install" },
55455
56072
  subCommands: {
55456
- list: listCommand20,
56073
+ list: listCommand21,
55457
56074
  search: searchCommand4,
55458
56075
  validate: validateCommand8,
55459
56076
  info: infoCommand,
@@ -55697,7 +56314,7 @@ __export(sticky_exports, {
55697
56314
  stickyCommand: () => stickyCommand
55698
56315
  });
55699
56316
  import { CleoError as CleoError10 } from "@cleocode/core";
55700
- var addCommand8, listCommand21, showCommand15, convertCommand, archiveCommand4, purgeCommand2, stickyCommand;
56317
+ var addCommand9, listCommand22, showCommand15, convertCommand, archiveCommand4, purgeCommand2, stickyCommand;
55701
56318
  var init_sticky3 = __esm({
55702
56319
  "packages/cleo/src/cli/commands/sticky.ts"() {
55703
56320
  "use strict";
@@ -55705,7 +56322,7 @@ var init_sticky3 = __esm({
55705
56322
  init_dist();
55706
56323
  init_cli();
55707
56324
  init_renderers();
55708
- addCommand8 = defineCommand({
56325
+ addCommand9 = defineCommand({
55709
56326
  meta: { name: "add", description: "Create a new sticky note" },
55710
56327
  args: {
55711
56328
  content: {
@@ -55753,7 +56370,7 @@ var init_sticky3 = __esm({
55753
56370
  }
55754
56371
  }
55755
56372
  });
55756
- listCommand21 = defineCommand({
56373
+ listCommand22 = defineCommand({
55757
56374
  meta: { name: "list", description: "List active sticky notes" },
55758
56375
  args: {
55759
56376
  tag: {
@@ -55987,10 +56604,10 @@ var init_sticky3 = __esm({
55987
56604
  description: "Manage sticky notes - quick project-wide ephemeral captures"
55988
56605
  },
55989
56606
  subCommands: {
55990
- add: addCommand8,
55991
- jot: addCommand8,
55992
- list: listCommand21,
55993
- ls: listCommand21,
56607
+ add: addCommand9,
56608
+ jot: addCommand9,
56609
+ list: listCommand22,
56610
+ ls: listCommand22,
55994
56611
  show: showCommand15,
55995
56612
  convert: convertCommand,
55996
56613
  archive: archiveCommand4,
@@ -56411,7 +57028,7 @@ function readPayload(args, textKey, fileKey) {
56411
57028
  if (file) return readFileSync15(file, "utf-8");
56412
57029
  return text;
56413
57030
  }
56414
- var filterArgs, summaryCommand3, listCommand22, showCommand16, deleteCommand3, clearCommand2, estimateCommand, tokenCommand;
57031
+ var filterArgs, summaryCommand3, listCommand23, showCommand16, deleteCommand3, clearCommand2, estimateCommand, tokenCommand;
56415
57032
  var init_token = __esm({
56416
57033
  "packages/cleo/src/cli/commands/token.ts"() {
56417
57034
  "use strict";
@@ -56447,7 +57064,7 @@ var init_token = __esm({
56447
57064
  );
56448
57065
  }
56449
57066
  });
56450
- listCommand22 = defineCommand({
57067
+ listCommand23 = defineCommand({
56451
57068
  meta: { name: "list", description: "List recorded token telemetry" },
56452
57069
  args: {
56453
57070
  ...filterArgs,
@@ -56582,7 +57199,7 @@ var init_token = __esm({
56582
57199
  },
56583
57200
  subCommands: {
56584
57201
  summary: summaryCommand3,
56585
- list: listCommand22,
57202
+ list: listCommand23,
56586
57203
  show: showCommand16,
56587
57204
  delete: deleteCommand3,
56588
57205
  clear: clearCommand2,
@@ -58447,6 +59064,12 @@ var COMMAND_MANIFEST = [
58447
59064
  description: "List tasks with optional filters",
58448
59065
  load: async () => (await Promise.resolve().then(() => (init_list(), list_exports))).listCommand
58449
59066
  },
59067
+ {
59068
+ exportName: "llmCommand",
59069
+ name: "llm",
59070
+ description: "Manage LLM credentials, role profiles, and resolver diagnostics",
59071
+ load: async () => (await Promise.resolve().then(() => (init_llm3(), llm_exports))).llmCommand
59072
+ },
58450
59073
  {
58451
59074
  exportName: "logCommand",
58452
59075
  name: "log",