audit-tools 0.32.6 → 0.32.7

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.
Files changed (114) hide show
  1. package/dist/audit/cli/args.d.ts.map +1 -1
  2. package/dist/audit/cli/args.js +5 -5
  3. package/dist/audit/cli/args.js.map +1 -1
  4. package/dist/audit/cli/dispatch.d.ts.map +1 -1
  5. package/dist/audit/cli/dispatch.js +7 -1
  6. package/dist/audit/cli/dispatch.js.map +1 -1
  7. package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
  8. package/dist/audit/cli/rollingAuditDispatch.js +26 -0
  9. package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
  10. package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
  11. package/dist/audit/cli/semanticReviewStep.js +8 -1
  12. package/dist/audit/cli/semanticReviewStep.js.map +1 -1
  13. package/dist/audit/extractors/fileInventory.d.ts.map +1 -1
  14. package/dist/audit/extractors/fileInventory.js +12 -2
  15. package/dist/audit/extractors/fileInventory.js.map +1 -1
  16. package/dist/audit/quota/hostLimits.d.ts +3 -2
  17. package/dist/audit/quota/hostLimits.d.ts.map +1 -1
  18. package/dist/audit/quota/hostLimits.js +2 -2
  19. package/dist/audit/quota/hostLimits.js.map +1 -1
  20. package/dist/audit/quota/index.d.ts +16 -16
  21. package/dist/remediate/contractPipeline/changeClassification.d.ts +7 -4
  22. package/dist/remediate/contractPipeline/changeClassification.d.ts.map +1 -1
  23. package/dist/remediate/contractPipeline/changeClassification.js +37 -5
  24. package/dist/remediate/contractPipeline/changeClassification.js.map +1 -1
  25. package/dist/remediate/contractPipeline/derive.d.ts +14 -4
  26. package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
  27. package/dist/remediate/contractPipeline/derive.js +57 -4
  28. package/dist/remediate/contractPipeline/derive.js.map +1 -1
  29. package/dist/remediate/contractPipeline/phaseCut.d.ts +6 -4
  30. package/dist/remediate/contractPipeline/phaseCut.d.ts.map +1 -1
  31. package/dist/remediate/contractPipeline/phaseCut.js +83 -7
  32. package/dist/remediate/contractPipeline/phaseCut.js.map +1 -1
  33. package/dist/remediate/contractPipeline/phaseCutArtifact.d.ts +3 -1
  34. package/dist/remediate/contractPipeline/phaseCutArtifact.d.ts.map +1 -1
  35. package/dist/remediate/contractPipeline/phaseCutArtifact.js +3 -1
  36. package/dist/remediate/contractPipeline/phaseCutArtifact.js.map +1 -1
  37. package/dist/remediate/index.d.ts +5 -3
  38. package/dist/remediate/index.d.ts.map +1 -1
  39. package/dist/remediate/index.js +7 -5
  40. package/dist/remediate/index.js.map +1 -1
  41. package/dist/remediate/quota/hostLimits.d.ts +3 -2
  42. package/dist/remediate/quota/hostLimits.d.ts.map +1 -1
  43. package/dist/remediate/quota/hostLimits.js +2 -2
  44. package/dist/remediate/quota/hostLimits.js.map +1 -1
  45. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  46. package/dist/remediate/steps/contractPipeline.js +3 -2
  47. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  48. package/dist/remediate/steps/contractPipelinePrompts.js +3 -3
  49. package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
  50. package/dist/remediate/steps/dispatch.d.ts.map +1 -1
  51. package/dist/remediate/steps/dispatch.js +7 -13
  52. package/dist/remediate/steps/dispatch.js.map +1 -1
  53. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  54. package/dist/remediate/steps/nextStep.js +10 -3
  55. package/dist/remediate/steps/nextStep.js.map +1 -1
  56. package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
  57. package/dist/remediate/validation/contractPipeline.js +62 -0
  58. package/dist/remediate/validation/contractPipeline.js.map +1 -1
  59. package/dist/shared/friction/frictionRecord.d.ts +31 -6
  60. package/dist/shared/friction/frictionRecord.d.ts.map +1 -1
  61. package/dist/shared/friction/frictionRecord.js.map +1 -1
  62. package/dist/shared/friction/triage.d.ts +30 -5
  63. package/dist/shared/friction/triage.d.ts.map +1 -1
  64. package/dist/shared/friction/triage.js +65 -19
  65. package/dist/shared/friction/triage.js.map +1 -1
  66. package/dist/shared/index.d.ts +6 -3
  67. package/dist/shared/index.d.ts.map +1 -1
  68. package/dist/shared/index.js +5 -2
  69. package/dist/shared/index.js.map +1 -1
  70. package/dist/shared/io/auditToolsPaths.d.ts +15 -1
  71. package/dist/shared/io/auditToolsPaths.d.ts.map +1 -1
  72. package/dist/shared/io/auditToolsPaths.js +23 -3
  73. package/dist/shared/io/auditToolsPaths.js.map +1 -1
  74. package/dist/shared/io/repoRoot.d.ts +28 -0
  75. package/dist/shared/io/repoRoot.d.ts.map +1 -0
  76. package/dist/shared/io/repoRoot.js +39 -0
  77. package/dist/shared/io/repoRoot.js.map +1 -0
  78. package/dist/shared/providers/openAiCompatibleProvider.d.ts.map +1 -1
  79. package/dist/shared/providers/openAiCompatibleProvider.js +68 -17
  80. package/dist/shared/providers/openAiCompatibleProvider.js.map +1 -1
  81. package/dist/shared/providers/providerFactory.d.ts +9 -2
  82. package/dist/shared/providers/providerFactory.d.ts.map +1 -1
  83. package/dist/shared/providers/providerFactory.js +19 -4
  84. package/dist/shared/providers/providerFactory.js.map +1 -1
  85. package/dist/shared/providers/types.d.ts +13 -0
  86. package/dist/shared/providers/types.d.ts.map +1 -1
  87. package/dist/shared/quota/capacity.d.ts +7 -7
  88. package/dist/shared/quota/codexHostConfig.d.ts +24 -0
  89. package/dist/shared/quota/codexHostConfig.d.ts.map +1 -0
  90. package/dist/shared/quota/codexHostConfig.js +49 -0
  91. package/dist/shared/quota/codexHostConfig.js.map +1 -0
  92. package/dist/shared/quota/hostLimits.d.ts +4 -7
  93. package/dist/shared/quota/hostLimits.d.ts.map +1 -1
  94. package/dist/shared/quota/hostLimits.js +18 -11
  95. package/dist/shared/quota/hostLimits.js.map +1 -1
  96. package/dist/shared/quota/types.d.ts +4 -4
  97. package/dist/shared/quota/types.d.ts.map +1 -1
  98. package/dist/shared/quota/types.js +7 -0
  99. package/dist/shared/quota/types.js.map +1 -1
  100. package/dist/shared/types/sessionConfig.d.ts +12 -0
  101. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  102. package/dist/shared/types/sessionConfig.js.map +1 -1
  103. package/docs/audit-pkg/contracts.md +1 -1
  104. package/docs/audit-pkg/development.md +6 -4
  105. package/docs/audit-pkg/operator-guide.md +3 -3
  106. package/docs/audit-pkg/product.md +1 -1
  107. package/docs/audit-pkg/release.md +13 -9
  108. package/package.json +6 -5
  109. package/remediate-code.mjs +3 -1
  110. package/skills/audit-code/SKILL.md +8 -4
  111. package/skills/audit-code/audit-code.prompt.md +15 -18
  112. package/skills/audit-code/opencode-command-template.txt +4 -5
  113. package/skills/remediate-code/remediate-code.prompt.md +9 -5
  114. package/wrapper/audit-code-wrapper-install-hosts.mjs +1 -1
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Codex's documented default concurrent-subagent ceiling: `[agents].max_threads`
3
+ * defaults to 6 when unset (OpenAI Codex config reference / subagents docs). This
4
+ * is a real product default, NOT a value we invented — but Codex Desktop exposes
5
+ * no environment variable for it, so when the config file is silent we fall back
6
+ * to this constant and label the source `known_default` (never `environment`).
7
+ */
8
+ export declare const CODEX_DEFAULT_MAX_THREADS = 6;
9
+ /** Injectable reader — returns the config file text, throws when it is absent. */
10
+ export type ReadTextFile = (filePath: string) => string;
11
+ /**
12
+ * Discover Codex's configured concurrent-subagent ceiling from its own config
13
+ * file: `~/.codex/config.toml` `[agents].max_threads`. This is the honest
14
+ * discovery source for the Codex cap — Codex does not surface it via env, but it
15
+ * IS a user-configurable value in Codex's config, so we read it there rather than
16
+ * assume. Returns null (caller applies {@link CODEX_DEFAULT_MAX_THREADS}) when the
17
+ * file is missing/unreadable/malformed or the key is absent or not a positive
18
+ * integer. Never throws — a bad config degrades to "no discovered value".
19
+ */
20
+ export declare function readCodexConfiguredMaxThreads(options?: {
21
+ configPath?: string;
22
+ readText?: ReadTextFile;
23
+ }): number | null;
24
+ //# sourceMappingURL=codexHostConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexHostConfig.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/codexHostConfig.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAExD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,GAAG,MAAM,GAAG,IAAI,CA2BhB"}
@@ -0,0 +1,49 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import path from "node:path";
4
+ import { parse as parseToml } from "smol-toml";
5
+ /**
6
+ * Codex's documented default concurrent-subagent ceiling: `[agents].max_threads`
7
+ * defaults to 6 when unset (OpenAI Codex config reference / subagents docs). This
8
+ * is a real product default, NOT a value we invented — but Codex Desktop exposes
9
+ * no environment variable for it, so when the config file is silent we fall back
10
+ * to this constant and label the source `known_default` (never `environment`).
11
+ */
12
+ export const CODEX_DEFAULT_MAX_THREADS = 6;
13
+ /**
14
+ * Discover Codex's configured concurrent-subagent ceiling from its own config
15
+ * file: `~/.codex/config.toml` `[agents].max_threads`. This is the honest
16
+ * discovery source for the Codex cap — Codex does not surface it via env, but it
17
+ * IS a user-configurable value in Codex's config, so we read it there rather than
18
+ * assume. Returns null (caller applies {@link CODEX_DEFAULT_MAX_THREADS}) when the
19
+ * file is missing/unreadable/malformed or the key is absent or not a positive
20
+ * integer. Never throws — a bad config degrades to "no discovered value".
21
+ */
22
+ export function readCodexConfiguredMaxThreads(options) {
23
+ const configPath = options?.configPath ?? path.join(homedir(), ".codex", "config.toml");
24
+ const readText = options?.readText ?? ((p) => readFileSync(p, "utf8"));
25
+ let raw;
26
+ try {
27
+ raw = readText(configPath);
28
+ }
29
+ catch {
30
+ return null; // no config file → no discovered value
31
+ }
32
+ let parsed;
33
+ try {
34
+ parsed = parseToml(raw);
35
+ }
36
+ catch {
37
+ return null; // malformed TOML degrades to no value (never throws)
38
+ }
39
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
40
+ return null;
41
+ const agents = parsed.agents;
42
+ if (!agents || typeof agents !== "object" || Array.isArray(agents))
43
+ return null;
44
+ const value = agents.max_threads;
45
+ return typeof value === "number" && Number.isInteger(value) && value > 0
46
+ ? value
47
+ : null;
48
+ }
49
+ //# sourceMappingURL=codexHostConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexHostConfig.js","sourceRoot":"","sources":["../../../src/shared/quota/codexHostConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAK3C;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAG7C;IACC,MAAM,UAAU,GACd,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/E,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,uCAAuC;IACtD,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,qDAAqD;IACpE,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhF,MAAM,MAAM,GAAI,MAAkC,CAAC,MAAM,CAAC;IAC1D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhF,MAAM,KAAK,GAAI,MAAkC,CAAC,WAAW,CAAC;IAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QACtE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}
@@ -1,16 +1,13 @@
1
1
  import type { SessionConfig } from "../types/sessionConfig.js";
2
2
  import type { HostConcurrencyLimit } from "./types.js";
3
- /**
4
- * Codex Desktop does not report its concurrency via env, so we apply this known
5
- * fixed active-subagent ceiling when the Codex Desktop originator override is
6
- * present. Exported so tests assert against the constant rather than a literal.
7
- */
8
- export declare const CODEX_DESKTOP_ACTIVE_SUBAGENT_LIMIT = 6;
9
- export declare function detectHostActiveSubagentLimit(envPrefix: string, env?: NodeJS.ProcessEnv): HostConcurrencyLimit | null;
3
+ /** Reads Codex's configured `[agents].max_threads`, or null when unset. Injectable for tests. */
4
+ export type ReadCodexMaxThreads = () => number | null;
5
+ export declare function detectHostActiveSubagentLimit(envPrefix: string, env?: NodeJS.ProcessEnv, readCodexMaxThreads?: ReadCodexMaxThreads): HostConcurrencyLimit | null;
10
6
  export declare function resolveHostActiveSubagentLimit(options: {
11
7
  envPrefix: string;
12
8
  explicitLimit?: number | null;
13
9
  sessionConfig: SessionConfig;
14
10
  env?: NodeJS.ProcessEnv;
11
+ readCodexMaxThreads?: ReadCodexMaxThreads;
15
12
  }): HostConcurrencyLimit | null;
16
13
  //# sourceMappingURL=hostLimits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostLimits.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/hostLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAarD,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,oBAAoB,GAAG,IAAI,CAsB7B;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,oBAAoB,GAAG,IAAI,CAsB9B"}
1
+ {"version":3,"file":"hostLimits.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/hostLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMvD,iGAAiG;AACjG,MAAM,MAAM,mBAAmB,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC;AAatD,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,mBAAmB,GAAE,mBAA2D,GAC/E,oBAAoB,GAAG,IAAI,CAkC7B;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,GAAG,oBAAoB,GAAG,IAAI,CA0B9B"}
@@ -1,9 +1,4 @@
1
- /**
2
- * Codex Desktop does not report its concurrency via env, so we apply this known
3
- * fixed active-subagent ceiling when the Codex Desktop originator override is
4
- * present. Exported so tests assert against the constant rather than a literal.
5
- */
6
- export const CODEX_DESKTOP_ACTIVE_SUBAGENT_LIMIT = 6;
1
+ import { CODEX_DEFAULT_MAX_THREADS, readCodexConfiguredMaxThreads, } from "./codexHostConfig.js";
7
2
  function parsePositiveInteger(value) {
8
3
  if (typeof value === "number") {
9
4
  return Number.isInteger(value) && value > 0 ? value : null;
@@ -16,7 +11,7 @@ function parsePositiveInteger(value) {
16
11
  const parsed = Number(trimmed);
17
12
  return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : null;
18
13
  }
19
- export function detectHostActiveSubagentLimit(envPrefix, env = process.env) {
14
+ export function detectHostActiveSubagentLimit(envPrefix, env = process.env, readCodexMaxThreads = () => readCodexConfiguredMaxThreads()) {
20
15
  const explicitEnvLimit = parsePositiveInteger(env[`${envPrefix}_HOST_MAX_ACTIVE_SUBAGENTS`] ??
21
16
  env.CODEX_MAX_ACTIVE_SUBAGENTS);
22
17
  if (explicitEnvLimit !== null) {
@@ -27,10 +22,22 @@ export function detectHostActiveSubagentLimit(envPrefix, env = process.env) {
27
22
  };
28
23
  }
29
24
  if (env.CODEX_INTERNAL_ORIGINATOR_OVERRIDE === "Codex Desktop") {
25
+ // Codex exposes no env var for its concurrency, but `[agents].max_threads`
26
+ // in `~/.codex/config.toml` IS its real user-configurable ceiling — discover
27
+ // it there. Only when that config is silent do we fall back to Codex's
28
+ // documented default, labelled `known_default` (not a fake env reading).
29
+ const discovered = readCodexMaxThreads();
30
+ if (discovered !== null) {
31
+ return {
32
+ active_subagents: discovered,
33
+ source: "discovered_config",
34
+ description: "Codex agents.max_threads from ~/.codex/config.toml.",
35
+ };
36
+ }
30
37
  return {
31
- active_subagents: CODEX_DESKTOP_ACTIVE_SUBAGENT_LIMIT,
32
- source: "environment",
33
- description: "Codex Desktop active subagent limit.",
38
+ active_subagents: CODEX_DEFAULT_MAX_THREADS,
39
+ source: "known_default",
40
+ description: "Codex documented default agents.max_threads (config file silent).",
34
41
  };
35
42
  }
36
43
  return null;
@@ -52,6 +59,6 @@ export function resolveHostActiveSubagentLimit(options) {
52
59
  description: "Host active subagent limit from session-config.",
53
60
  };
54
61
  }
55
- return detectHostActiveSubagentLimit(options.envPrefix, options.env);
62
+ return detectHostActiveSubagentLimit(options.envPrefix, options.env, options.readCodexMaxThreads ?? (() => readCodexConfiguredMaxThreads()));
56
63
  }
57
64
  //# sourceMappingURL=hostLimits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostLimits.js","sourceRoot":"","sources":["../../../src/shared/quota/hostLimits.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,SAAiB,EACjB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,gBAAgB,GAAG,oBAAoB,CAC3C,GAAG,CAAC,GAAG,SAAS,4BAA4B,CAAC;QAC3C,GAAG,CAAC,0BAA0B,CACjC,CAAC;IACF,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO;YACL,gBAAgB,EAAE,gBAAgB;YAClC,MAAM,EAAE,aAAa;YACrB,WAAW,EAAE,8CAA8C;SAC5D,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,kCAAkC,KAAK,eAAe,EAAE,CAAC;QAC/D,OAAO;YACL,gBAAgB,EAAE,mCAAmC;YACrD,MAAM,EAAE,aAAa;YACrB,WAAW,EAAE,sCAAsC;SACpD,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAK9C;IACC,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAC1E,OAAO;YACL,gBAAgB,EAAE,OAAO,CAAC,aAAa;YACvC,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,+DAA+D;SAC7E,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,oBAAoB,CAC1C,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,0BAA0B;QACrD,OAAO,CAAC,aAAa,CAAC,gBAAgB,CACzC,CAAC;IACF,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE,iDAAiD;SAC/D,CAAC;IACJ,CAAC;IAED,OAAO,6BAA6B,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"hostLimits.js","sourceRoot":"","sources":["../../../src/shared/quota/hostLimits.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAK9B,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,SAAiB,EACjB,MAAyB,OAAO,CAAC,GAAG,EACpC,sBAA2C,GAAG,EAAE,CAAC,6BAA6B,EAAE;IAEhF,MAAM,gBAAgB,GAAG,oBAAoB,CAC3C,GAAG,CAAC,GAAG,SAAS,4BAA4B,CAAC;QAC3C,GAAG,CAAC,0BAA0B,CACjC,CAAC;IACF,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO;YACL,gBAAgB,EAAE,gBAAgB;YAClC,MAAM,EAAE,aAAa;YACrB,WAAW,EAAE,8CAA8C;SAC5D,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,kCAAkC,KAAK,eAAe,EAAE,CAAC;QAC/D,2EAA2E;QAC3E,6EAA6E;QAC7E,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;QACzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;gBACL,gBAAgB,EAAE,UAAU;gBAC5B,MAAM,EAAE,mBAAmB;gBAC3B,WAAW,EAAE,qDAAqD;aACnE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,gBAAgB,EAAE,yBAAyB;YAC3C,MAAM,EAAE,eAAe;YACvB,WAAW,EAAE,mEAAmE;SACjF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAM9C;IACC,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAC1E,OAAO;YACL,gBAAgB,EAAE,OAAO,CAAC,aAAa;YACvC,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,+DAA+D;SAC7E,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,oBAAoB,CAC1C,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,0BAA0B;QACrD,OAAO,CAAC,aAAa,CAAC,gBAAgB,CACzC,CAAC;IACF,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE,iDAAiD;SAC/D,CAAC;IACJ,CAAC;IAED,OAAO,6BAA6B,CAClC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,6BAA6B,EAAE,CAAC,CACvE,CAAC;AACJ,CAAC"}
@@ -3,18 +3,18 @@ export declare const LimitSourceSchema: z.ZodEnum<["explicit_config", "discovere
3
3
  export type LimitSource = z.infer<typeof LimitSourceSchema>;
4
4
  export declare const LimitConfidenceSchema: z.ZodEnum<["high", "medium", "low"]>;
5
5
  export type LimitConfidence = z.infer<typeof LimitConfidenceSchema>;
6
- export declare const HostConcurrencyLimitSourceSchema: z.ZodEnum<["cli_flags", "host_reported", "session_config", "environment"]>;
6
+ export declare const HostConcurrencyLimitSourceSchema: z.ZodEnum<["cli_flags", "host_reported", "session_config", "environment", "discovered_config", "known_default"]>;
7
7
  export type HostConcurrencyLimitSource = z.infer<typeof HostConcurrencyLimitSourceSchema>;
8
8
  export declare const HostConcurrencyLimitSchema: z.ZodObject<{
9
9
  active_subagents: z.ZodNumber;
10
- source: z.ZodEnum<["cli_flags", "host_reported", "session_config", "environment"]>;
10
+ source: z.ZodEnum<["cli_flags", "host_reported", "session_config", "environment", "discovered_config", "known_default"]>;
11
11
  description: z.ZodString;
12
12
  }, "strict", z.ZodTypeAny, {
13
- source: "cli_flags" | "host_reported" | "session_config" | "environment";
13
+ source: "cli_flags" | "host_reported" | "session_config" | "environment" | "discovered_config" | "known_default";
14
14
  active_subagents: number;
15
15
  description: string;
16
16
  }, {
17
- source: "cli_flags" | "host_reported" | "session_config" | "environment";
17
+ source: "cli_flags" | "host_reported" | "session_config" | "environment" | "discovered_config" | "known_default";
18
18
  active_subagents: number;
19
19
  description: string;
20
20
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,gHAO5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,qBAAqB,sCAAoC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,gCAAgC,4EAK3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAM5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,8FAQ/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,cAAc,CAAC;IAChC,sBAAsB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC7E;;;OAGG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAMpB,CAAC;AACZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,gHAO5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,qBAAqB,sCAAoC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,gCAAgC,kHAY3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAM5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAQtB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,8FAQ/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,cAAc,CAAC;IAChC,sBAAsB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC7E;;;OAGG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAMpB,CAAC;AACZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
@@ -13,6 +13,13 @@ export const HostConcurrencyLimitSourceSchema = z.enum([
13
13
  "host_reported",
14
14
  "session_config",
15
15
  "environment",
16
+ // Read from a host's own config file (e.g. Codex `~/.codex/config.toml`
17
+ // `[agents].max_threads`) — a real discovered value, not an env reading.
18
+ "discovered_config",
19
+ // A documented product default applied when the host exposes no configurable
20
+ // signal (e.g. Codex's default `agents.max_threads` of 6). Honestly labelled
21
+ // as a known constant rather than masquerading as an environment reading.
22
+ "known_default",
16
23
  ]);
17
24
  export const HostConcurrencyLimitSchema = z
18
25
  .object({
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/quota/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,iBAAiB;IACjB,uBAAuB;IACvB,WAAW;IACX,kBAAkB;IAClB,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,IAAI,CAAC;IACrD,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,aAAa;CACd,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,gCAAgC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC;KACD,MAAM,EAAE,CAAC;AA8BZ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,KAAK;IACL,KAAK;IACL,cAAc;IACd,SAAS;IACT,UAAU;IACV,kBAAkB;IAClB,MAAM;CACP,CAAC,CAAC;AA6BH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/quota/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,iBAAiB;IACjB,uBAAuB;IACvB,WAAW;IACX,kBAAkB;IAClB,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,IAAI,CAAC;IACrD,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,wEAAwE;IACxE,yEAAyE;IACzE,mBAAmB;IACnB,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,eAAe;CAChB,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,gCAAgC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC;KACD,MAAM,EAAE,CAAC;AA8BZ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,KAAK;IACL,KAAK;IACL,cAAc;IACd,SAAS;IACT,UAAU;IACV,kBAAkB;IAClB,MAAM;CACP,CAAC,CAAC;AA6BH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -72,6 +72,18 @@ export interface OpenAiCompatibleConfig {
72
72
  * provider retries once without it, so leaving it on is safe for any endpoint.
73
73
  */
74
74
  response_format_json?: boolean;
75
+ /**
76
+ * Plumb the worker's canonical JSON Schema into the request as a per-field
77
+ * emit-time constraint (`response_format: {type:"json_schema"}` for OpenAI /
78
+ * vLLM structured outputs, plus `guided_json` / `nvext.guided_json` for NIM /
79
+ * vLLM guided decoding) whenever the dispatch site supplies a schema (CE-004
80
+ * build lever). ON by default (nullish: enabled unless explicitly `false`) — it
81
+ * is ADDITIVE and degrades cleanly: if the endpoint rejects the schema form
82
+ * (HTTP 400/422) the provider retries with a plain `json_object`, then without
83
+ * any `response_format`, so leaving it on is safe for any endpoint. Set `false`
84
+ * to force the weaker `json_object`-only behavior.
85
+ */
86
+ guided_json?: boolean;
75
87
  /** Inline current contents of prompt-referenced files so edits are grounded. Default true. */
76
88
  include_referenced_files?: boolean;
77
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessionConfig.d.ts","sourceRoot":"","sources":["../../../src/shared/types/sessionConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionConfig.d.ts","sourceRoot":"","sources":["../../../src/shared/types/sessionConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessionConfig.js","sourceRoot":"","sources":["../../../src/shared/types/sessionConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM;IACN,kBAAkB;IAClB,qBAAqB;IACrB,aAAa;IACb,OAAO;IACP,UAAU;IACV,mBAAmB;IACnB,aAAa;IACb,aAAa;CACL,CAAC;AAIX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AA6FjE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qBAAqB,EAAE,qBAAqB;IAC5C,aAAa,EAAE,aAAa;IAC5B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,mBAAmB;IACxC,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,aAAa;CAClB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,kBAAkB;IAClB,qBAAqB;CACb,CAAC;AAuLX;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,WAAW;IACX,WAAW;IACX,MAAM;IACN,MAAM;CACE,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"sessionConfig.js","sourceRoot":"","sources":["../../../src/shared/types/sessionConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM;IACN,kBAAkB;IAClB,qBAAqB;IACrB,aAAa;IACb,OAAO;IACP,UAAU;IACV,mBAAmB;IACnB,aAAa;IACb,aAAa;CACL,CAAC;AAIX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAyGjE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qBAAqB,EAAE,qBAAqB;IAC5C,aAAa,EAAE,aAAa;IAC5B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,mBAAmB;IACxC,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,aAAa;CAClB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,kBAAkB;IAClB,qBAAqB;CACb,CAAC;AAuLX;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,WAAW;IACX,WAAW;IACX,MAAM;IACN,MAAM;CACE,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC"}
@@ -116,7 +116,7 @@ artifacts are shaped by:
116
116
  Normal packet flow:
117
117
 
118
118
  ```text
119
- audit-code next-step --host-can-dispatch-subagents true
119
+ audit-code next-step --host-can-dispatch-subagents
120
120
  backend prepares dispatch-plan.json
121
121
  conversation launches one worker per dispatch-plan entry
122
122
  worker reads entry.prompt_path
@@ -7,8 +7,9 @@
7
7
  - `examples/`: validated artifact examples
8
8
  - `skills/audit-code/`: canonical prompt and skill-facing instructions
9
9
  - `dispatch/`: packet-dispatch support data
10
- - `tests/`: Node test suite and regression coverage
11
- - `dist/`: checked-in compiled runtime used by packaged installs
10
+ - `tests/`: vitest-based test suite and regression coverage
11
+ - `dist/`: build output (gitignored, not checked in) produced by `npm run build` / the `prepack` script;
12
+ shipped only in the packed npm tarball
12
13
 
13
14
  ## Agent handoff
14
15
 
@@ -106,6 +107,7 @@ real host (`prepare-dispatch` → worker reviews each packet → `submit-packet`
106
107
  checkout. On Windows, runtime validation runs package-manager shims (`npm`,
107
108
  `npx`, `pnpm`, `yarn`) through the command shell so `.cmd` wrappers execute
108
109
  reliably — keep that covered when changing runtime command execution. If the
109
- final `audit-report.md` cannot be copied into the target repo due to local
110
- permissions, completion still succeeds and the artifact copy is authoritative.
110
+ final `audit-report.md` cannot be promoted from `.audit-tools/audit/` to
111
+ `.audit-tools/audit-report.md` due to local permissions, completion still succeeds and the
112
+ pre-promotion copy under `.audit-tools/audit/` is authoritative.
111
113
  </content>
@@ -199,9 +199,9 @@ and `yarn` through the Windows command shell automatically. A runtime
199
199
  `not_confirmed` result can still be environmental when the target repo command
200
200
  starts but cannot write its own build output.
201
201
 
202
- If final report promotion to `<repo-root>/audit-report.md` is blocked by local
203
- permissions, the audit can still complete. Use the artifact-bundle copy of
204
- `audit-report.md` and run `audit-code validate`.
202
+ If final report promotion to `.audit-tools/audit-report.md` is blocked by local
203
+ permissions, the audit can still complete. Use the copy at `.audit-tools/audit/audit-report.md`
204
+ and run `audit-code validate`.
205
205
 
206
206
  Run `audit-code validate` after editing session config so command-template
207
207
  issues fail before a long audit run.
@@ -30,7 +30,7 @@ The supported user-facing surfaces are:
30
30
  5. `audit-code install` for explicit repair or force refresh
31
31
  6. `audit-code` as the repo-local backend fallback
32
32
 
33
- Anything below `dist/index.js` is backend or development interface.
33
+ Anything below `dist/` is backend or development interface.
34
34
 
35
35
  ## Product model
36
36
 
@@ -11,12 +11,15 @@ npm run verify:release
11
11
 
12
12
  `verify:release` covers:
13
13
 
14
- - TypeScript typecheck
15
- - full automated test suite
16
- - linked-install `audit-code` smoke coverage
17
- - packaged-install `audit-code` smoke coverage
18
- - tarball contract verification for shipped assets and runtime entrypoints
19
- - packaged and linked verification of bootstrap install behavior
14
+ - TypeScript typecheck (`check`)
15
+ - dead-code export gate (`check:deadcode`)
16
+ - doc-manifest reconciliation gate (`check:doc-manifest`)
17
+ - full automated test suite (`test`)
18
+ - host-install verification for both bins (`verify:hosts`, `verify:remediate-hosts`)
19
+ - packaged-install smoke coverage for both bins (`smoke:packaged-audit-code`, `smoke:packaged-remediate-code`)
20
+
21
+ Linked-install smoke coverage (`smoke:linked-audit-code`, `smoke:linked-remediate-code`) is available as a
22
+ standalone command but is not part of the `verify:release` chain.
20
23
 
21
24
  For live child-process output while debugging smoke tests:
22
25
 
@@ -75,9 +78,10 @@ Full maintainer flow:
75
78
  npm run release:patch:publish
76
79
  ```
77
80
 
78
- That command checks the worktree, runs the release gate, bumps the version,
79
- commits, tags, pushes `main` and the tag, creates the GitHub Release, waits for
80
- `publish-package.yml`, and confirms the new npm version resolves.
81
+ That command checks the worktree, runs a fast local typecheck gate (`npm run check` — not the full
82
+ `verify:release` suite, which already ran via CI/the `/ship` preflight), bumps the version, commits,
83
+ tags, pushes `main` and the tag, creates the GitHub Release, waits for `publish-package.yml`, and
84
+ confirms the new npm version resolves.
81
85
 
82
86
  Minor and major publish variants:
83
87
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "audit-tools",
3
- "version": "0.32.6",
3
+ "version": "0.32.7",
4
4
  "private": false,
5
5
  "description": "Portable hybrid code auditing + remediation orchestrators for arbitrary repositories.",
6
6
  "type": "module",
@@ -40,7 +40,8 @@
40
40
  "check": "tsc -p tsconfig.json --noEmit",
41
41
  "test": "npm run build && vitest run",
42
42
  "test:single": "npm run build && vitest run",
43
- "verify:release": "npm run check && npm run check:deadcode && npm run check:doc-manifest && npm test && npm run verify:hosts && npm run verify:remediate-hosts && npm run smoke:packaged-audit-code && npm run smoke:packaged-remediate-code",
43
+ "verify:checks": "npm run check && npm run check:deadcode && npm run check:doc-manifest && npm run build && npm run verify:hosts && npm run verify:remediate-hosts && npm run smoke:packaged-audit-code && npm run smoke:packaged-remediate-code",
44
+ "verify:release": "npm run verify:checks && vitest run",
44
45
  "check:deadcode": "knip --no-config-hints",
45
46
  "check:doc-manifest": "node scripts/check-doc-manifest.mjs",
46
47
  "verify:hosts": "node scripts/audit/verify-hosts.mjs",
@@ -68,7 +69,8 @@
68
69
  "commander": "^13.0.0",
69
70
  "smol-toml": "^1.6.1",
70
71
  "yaml": "^2.9.0",
71
- "zod": "^3.25.76"
72
+ "zod": "^3.25.76",
73
+ "zod-to-json-schema": "^3.24.6"
72
74
  },
73
75
  "devDependencies": {
74
76
  "@types/node": "^24.3.0",
@@ -78,8 +80,7 @@
78
80
  "tsx": "^4.19.0",
79
81
  "typescript": "^5.9.2",
80
82
  "vitest": "^3.0.0",
81
- "web-tree-sitter": "^0.25.10",
82
- "zod-to-json-schema": "^3.24.6"
83
+ "web-tree-sitter": "^0.25.10"
83
84
  },
84
85
  "repository": {
85
86
  "type": "git",
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  // Thin wrapper: locates the built dist and delegates to it.
3
- // Supports: run, install, ensure, validate
3
+ // Interprets the installer verbs (install, ensure, verify-install, install-host)
4
+ // locally via the B2 bootstrap; every other verb (e.g. next-step) is forwarded
5
+ // to dist/remediate/index.js.
4
6
 
5
7
  import { fileURLToPath } from "url";
6
8
  import { pathToFileURL } from "url";
@@ -66,19 +66,17 @@ can dispatch to *right now* on every `next-step` call so the backend sizes revie
66
66
  packets to your real model instead of a conservative 32k floor.
67
67
 
68
68
  ```bash
69
- audit-code next-step --host-max-active-subagents 4 --host-models '[{"rank":"small","context_tokens":32000,"output_tokens":8000},{"rank":"standard","context_tokens":200000,"output_tokens":32000},{"rank":"deep","context_tokens":200000,"output_tokens":64000}]'
69
+ audit-code next-step --host-models '[{"rank":"small","context_tokens":32000,"output_tokens":8000},{"rank":"standard","context_tokens":200000,"output_tokens":32000},{"rank":"deep","context_tokens":200000,"output_tokens":64000}]'
70
70
  ```
71
71
 
72
72
  Or with a single dispatch model:
73
73
 
74
74
  ```bash
75
- audit-code next-step --host-max-active-subagents 4 --host-context-tokens 200000 --host-output-tokens 32000
75
+ audit-code next-step --host-context-tokens 200000 --host-output-tokens 32000
76
76
  ```
77
77
 
78
78
  Key flags:
79
79
 
80
- - `--host-max-active-subagents` — parallel subagent capacity (via the `Agent`/`task`
81
- tool). Without it the backend assumes serial dispatch.
82
80
  - `--host-models` — ordered JSON array (lowest rank first) of models you can dispatch
83
81
  subagents to *right now*, one entry per relative rank
84
82
  (`"small"`, `"standard"`, `"deep"`). Ranks are relative capability labels — never
@@ -87,6 +85,12 @@ Key flags:
87
85
  - `--host-context-tokens` / `--host-output-tokens` — single-model shorthand. When
88
86
  `--host-models` is also given, the roster wins.
89
87
 
88
+ Do **not** report a parallel-subagent count — the backend owns concurrency (its
89
+ token-budget gate plus any hard host cap it can detect, e.g. Codex
90
+ `[agents].max_threads`), and runs uncapped when it detects none. An operator with
91
+ a genuine fixed machine limit may pass `--host-max-active-subagents N` as an
92
+ optional override; it is never a value to guess.
93
+
90
94
  When a step prompt tells you to continue, repeat `audit-code next-step` with the
91
95
  same capability flags and follow only the newly returned `prompt_path`. Stop when
92
96
  the current step prompt tells you to stop.
@@ -29,9 +29,6 @@ handshake**: report what you can dispatch to *right now* on every `next-step`
29
29
  call, so the backend sizes review packets to your real model instead of a
30
30
  conservative 32k floor. Report:
31
31
 
32
- - `--host-max-active-subagents` — how many review subagents you can run in
33
- parallel (via the `Agent`/`task` tool). Without it the backend assumes serial
34
- dispatch and sizes waves to one packet at a time.
35
32
  - `--host-models` — an ordered JSON array (lowest rank first) of the models you
36
33
  can dispatch subagents to *right now*, one entry per relative rank:
37
34
  `{"rank": "small"|"standard"|"deep", "context_tokens": N, "output_tokens": N}`.
@@ -48,25 +45,31 @@ conservative 32k floor. Report:
48
45
  model. When `--host-models` is also given, the roster wins. Omit both and
49
46
  dispatch falls back to the conservative 32k default (many tiny packets).
50
47
 
48
+ Do **not** report a parallel-subagent count. The backend owns concurrency: it
49
+ sizes how many subagents run at once from its own token-budget gate and from any
50
+ hard host cap it can detect (e.g. Codex's `~/.codex/config.toml`
51
+ `[agents].max_threads`). When it detects no hard cap it runs without one — you
52
+ never supply or guess a number. (An operator with a genuine fixed parallel limit
53
+ for this machine may pass `--host-max-active-subagents N` as an optional
54
+ override; it is not part of the handshake and is never something to invent.)
55
+
51
56
  ```bash
52
- audit-code next-step --host-max-active-subagents 4 --host-models '[{"rank":"small","context_tokens":32000,"output_tokens":8000},{"rank":"standard","context_tokens":200000,"output_tokens":32000},{"rank":"deep","context_tokens":200000,"output_tokens":64000}]'
57
+ audit-code next-step --host-models '[{"rank":"small","context_tokens":32000,"output_tokens":8000},{"rank":"standard","context_tokens":200000,"output_tokens":32000},{"rank":"deep","context_tokens":200000,"output_tokens":64000}]'
53
58
  ```
54
59
 
55
60
  Or with a single dispatch model:
56
61
 
57
62
  ```bash
58
- audit-code next-step --host-max-active-subagents 4 --host-context-tokens 200000 --host-output-tokens 32000
63
+ audit-code next-step --host-context-tokens 200000 --host-output-tokens 32000
59
64
  ```
60
65
 
61
- `4` is a safe concurrency default for this host; raise it for more parallelism or
62
- lower it under rate-limit pressure. The backend's learned quota adapts from
63
- there. The token values should match the window of the model(s) dispatching the
64
- packets (e.g. 200000 / 32000 for a 200k-context model).
66
+ The token values should match the window of the model(s) dispatching the packets
67
+ (e.g. 200000 / 32000 for a 200k-context model).
65
68
 
66
69
  When developing `audit-tools` itself, from the repo root use:
67
70
 
68
71
  ```bash
69
- node audit-code.mjs next-step --host-max-active-subagents 4 --host-context-tokens 200000 --host-output-tokens 32000
72
+ node audit-code.mjs next-step --host-context-tokens 200000 --host-output-tokens 32000
70
73
  ```
71
74
 
72
75
  Read the returned JSON only far enough to find `prompt_path`, then read and
@@ -98,14 +101,8 @@ directory. It contains `repo_root`, `auditable_file_count`, `git_available`, and
98
101
  - If `mis_scope_smells` is empty, the echo is informational only — continue
99
102
  automatically without interrupting the workflow.
100
103
 
101
- Use MCP tools only as a compatibility adapter when direct shell access to
102
- `audit-code next-step` is unavailable. The MCP `start_audit` and
103
- `continue_audit` tools return the same one-step contract; they are not a
104
- separate orchestration path.
105
-
106
104
  When a step prompt tells you to continue, run `audit-code next-step` again with
107
- the same capability flags (`--host-max-active-subagents`, `--host-models`,
108
- `--host-context-tokens`, `--host-output-tokens`) and follow only the newly
109
- returned `prompt_path`.
105
+ the same capability flags (`--host-models`, `--host-context-tokens`,
106
+ `--host-output-tokens`) and follow only the newly returned `prompt_path`.
110
107
 
111
108
  Stop when the current step prompt tells you to stop.
@@ -3,11 +3,10 @@
3
3
  Use `audit-code next-step` as the primary interface to the audit workflow.
4
4
 
5
5
  1. Run `audit-code next-step` directly when shell access is available.
6
- 2. If MCP is your only available interface, call `start_audit` or `continue_audit`; both return the same one-step contract.
7
- 3. Read `prompt_content` in the response and follow it.
8
- 4. When a step completes (not blocked), run `audit-code next-step` again or call `continue_audit` as the compatibility adapter.
9
- 5. Stop when the step instructions say to stop.
6
+ 2. Read `prompt_content` in the response and follow it.
7
+ 3. When a step completes (not blocked), run `audit-code next-step` again.
8
+ 4. Stop when the step instructions say to stop.
10
9
 
11
10
  Use the `task` tool or equivalent for subagent dispatch when the step tells you to fan out review work.
12
11
 
13
- If neither shell access nor `start_audit` is available, stop and report that no next-step interface is connected.
12
+ If shell access to `audit-code next-step` is unavailable, stop and report that no next-step interface is connected.
@@ -55,9 +55,13 @@ Every `next-step` call is also the **capability handshake**: report what you can
55
55
  dispatch to *right now* so the backend sizes remediation waves and per-worker
56
56
  context to your real model instead of a conservative 32k floor. Report:
57
57
 
58
- - `--host-can-dispatch-subagents` / `--host-max-concurrent` — whether you can run
59
- callable subagents and how many in parallel. Without them the backend assumes
60
- serial dispatch.
58
+ - `--host-can-dispatch-subagents` — whether you can run callable subagents at all
59
+ (via the `Agent`/`task` tool). Without it the backend runs remediation serially.
60
+ Do **not** report a parallel-worker count: the backend owns concurrency (its
61
+ token-budget gate plus any hard host cap it can detect, e.g. Codex
62
+ `[agents].max_threads`) and runs uncapped when it detects none. An operator with
63
+ a genuine fixed machine limit may pass `--host-max-concurrent N` as an optional
64
+ override; it is never a value to guess.
61
65
  - `--host-models` — an ordered JSON array (lowest rank first) of the models you
62
66
  can dispatch workers to *right now*, one entry per relative rank:
63
67
  `{"rank": "small"|"standard"|"deep", "context_tokens": N, "output_tokens": N}`.
@@ -74,13 +78,13 @@ context to your real model instead of a conservative 32k floor. Report:
74
78
  value.
75
79
 
76
80
  ```bash
77
- remediate-code next-step --input <path> --host-max-concurrent 4 --host-models '[{"rank":"standard","context_tokens":200000,"output_tokens":32000},{"rank":"deep","context_tokens":200000,"output_tokens":64000}]'
81
+ remediate-code next-step --input <path> --host-can-dispatch-subagents --host-models '[{"rank":"standard","context_tokens":200000,"output_tokens":32000},{"rank":"deep","context_tokens":200000,"output_tokens":64000}]'
78
82
  ```
79
83
 
80
84
  Or with a single dispatch model:
81
85
 
82
86
  ```bash
83
- remediate-code next-step --input <path> --host-max-concurrent 4 --host-context-tokens 200000 --host-output-tokens 32000
87
+ remediate-code next-step --input <path> --host-can-dispatch-subagents --host-context-tokens 200000 --host-output-tokens 32000
84
88
  ```
85
89
 
86
90
  Read the returned JSON only far enough to find `prompt_path`, then read and
@@ -104,7 +104,7 @@ function toRepoRelativePath(root, targetPath) {
104
104
  return value.length > 0 ? value : '.';
105
105
  }
106
106
 
107
- function buildInstallDirective(relativePromptPath) {
107
+ export function buildInstallDirective(relativePromptPath) {
108
108
  return [
109
109
  INSTALL_MARKER_START,
110
110
  '## /audit-code',