audit-tools 0.34.30 → 0.34.32

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 (53) hide show
  1. package/dist/audit/cli/auditStep.d.ts +1 -1
  2. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  3. package/dist/audit/cli/nextStepCommand.js +101 -72
  4. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  5. package/dist/audit/cli/prepareDispatchCommand.d.ts +32 -0
  6. package/dist/audit/cli/prepareDispatchCommand.d.ts.map +1 -1
  7. package/dist/audit/cli/prepareDispatchCommand.js +39 -16
  8. package/dist/audit/cli/prepareDispatchCommand.js.map +1 -1
  9. package/dist/audit/cli/quotaCommand.d.ts.map +1 -1
  10. package/dist/audit/cli/quotaCommand.js +8 -20
  11. package/dist/audit/cli/quotaCommand.js.map +1 -1
  12. package/dist/audit/contracts/wrapperResponse.d.ts +6 -6
  13. package/dist/audit/types/auditState.d.ts +6 -6
  14. package/dist/remediate/steps/dispatch/implementPrompt.d.ts +2 -2
  15. package/dist/remediate/steps/dispatch/implementPrompt.d.ts.map +1 -1
  16. package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -1
  17. package/dist/remediate/steps/dispatch/marshal.js +18 -5
  18. package/dist/remediate/steps/dispatch/marshal.js.map +1 -1
  19. package/dist/remediate/steps/nextStep.d.ts +7 -2
  20. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  21. package/dist/remediate/steps/nextStep.js +17 -15
  22. package/dist/remediate/steps/nextStep.js.map +1 -1
  23. package/dist/remediate/steps/types.d.ts +21 -0
  24. package/dist/remediate/steps/types.d.ts.map +1 -1
  25. package/dist/remediate/steps/types.js.map +1 -1
  26. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  27. package/dist/remediate/validation/artifacts.js +9 -0
  28. package/dist/remediate/validation/artifacts.js.map +1 -1
  29. package/dist/remediate/validation/contractPipelineGates.d.ts +7 -3
  30. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  31. package/dist/remediate/validation/contractPipelineGates.js +9 -21
  32. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  33. package/dist/shared/engine/obligationEngine.d.ts +2 -2
  34. package/dist/shared/providers/openAiCompatibleProvider.d.ts.map +1 -1
  35. package/dist/shared/providers/openAiCompatibleProvider.js +60 -4
  36. package/dist/shared/providers/openAiCompatibleProvider.js.map +1 -1
  37. package/dist/shared/providers/proxyCatalog.d.ts +55 -10
  38. package/dist/shared/providers/proxyCatalog.d.ts.map +1 -1
  39. package/dist/shared/providers/proxyCatalog.js +82 -24
  40. package/dist/shared/providers/proxyCatalog.js.map +1 -1
  41. package/dist/shared/quota/apiPool.d.ts.map +1 -1
  42. package/dist/shared/quota/apiPool.js +9 -0
  43. package/dist/shared/quota/apiPool.js.map +1 -1
  44. package/dist/shared/types/sessionConfig.d.ts +11 -0
  45. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  46. package/dist/shared/types/sessionConfig.js.map +1 -1
  47. package/dist/shared/validation/findingGrounding.d.ts +19 -7
  48. package/dist/shared/validation/findingGrounding.d.ts.map +1 -1
  49. package/dist/shared/validation/findingGrounding.js +22 -10
  50. package/dist/shared/validation/findingGrounding.js.map +1 -1
  51. package/package.json +3 -2
  52. package/scripts/audit/postinstall.mjs +16 -1
  53. package/scripts/remediate/postinstall.mjs +17 -1
@@ -86,19 +86,31 @@ export function resolveBasenameToTrackedPath(basename, knownPaths) {
86
86
  }
87
87
  /**
88
88
  * Case-preserving corpus of the tracked working-tree paths at `root`, via
89
- * `git ls-files` (forward-slashed, trimmed). This is the sibling of the M-B3
90
- * gate's `enumerateRepoTreePaths` (which `normalizeRepoPath`-lowercases for
91
- * membership matching): the remediate consumers that resolve a basename and then
92
- * read the file off disk (line counting) need the REAL on-disk case, so this one
93
- * does not lowercase. Degrades to an empty set when git is missing / not a repo
94
- * (callers then fall back to their existing `existsSync` check — monotonic, never
95
- * a regression). OS-agnostic: `shell: false`, forward-slash output.
89
+ * `git ls-files -z` (forward-slashed). THE one git enumeration behind both
90
+ * grounding corpora: the M-B3 gate's `enumerateRepoTreePaths` is a
91
+ * `normalizeRepoPath`-lowercased draw over this set, while the remediate
92
+ * consumers that resolve a basename and then read the file off disk (line
93
+ * counting) need the REAL on-disk case, so this one does not lowercase.
94
+ *
95
+ * `-z` is load-bearing, not a flourish: plain `ls-files` renders any path git
96
+ * considers unusual in C-quoted form (`core.quotePath` turns a non-ASCII byte
97
+ * into `\303`, and a path containing a newline is quoted too), so a newline
98
+ * split yielded an entry that no longer equals the real repo path — every
99
+ * citation naming that file silently failed to ground while the file-disposition
100
+ * rule, which already used `-z`, kept it in scope. NUL-delimited output is
101
+ * unquoted and unambiguous, so entries are taken verbatim (no trim: with no line
102
+ * terminator to strip, trimming could only damage a legitimately space-padded
103
+ * POSIX path).
104
+ *
105
+ * Degrades to an empty set when git is missing / not a repo (callers then fall
106
+ * back to their existing `existsSync` check — monotonic, never a regression).
107
+ * OS-agnostic: `shell: false`, forward-slash output.
96
108
  */
97
109
  export function enumerateTrackedFilePaths(root) {
98
110
  const known = new Set();
99
111
  let result;
100
112
  try {
101
- result = spawnSync("git", ["ls-files"], {
113
+ result = spawnSync("git", ["ls-files", "-z"], {
102
114
  cwd: root,
103
115
  encoding: "utf8",
104
116
  shell: false,
@@ -112,8 +124,8 @@ export function enumerateTrackedFilePaths(root) {
112
124
  if (!result || result.status !== 0 || typeof result.stdout !== "string") {
113
125
  return known;
114
126
  }
115
- for (const line of result.stdout.split("\n")) {
116
- const path = line.trim().replace(/\\/g, "/");
127
+ for (const entry of result.stdout.split("\0")) {
128
+ const path = entry.replace(/\\/g, "/");
117
129
  if (path.length > 0)
118
130
  known.add(path);
119
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findingGrounding.js","sourceRoot":"","sources":["../../../src/shared/validation/findingGrounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findingGrounding.js","sourceRoot":"","sources":["../../../src/shared/validation/findingGrounding.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "audit-tools",
3
- "version": "0.34.30",
3
+ "version": "0.34.32",
4
4
  "private": false,
5
5
  "license": "ISC",
6
6
  "description": "Portable hybrid code auditing + remediation orchestrators for arbitrary repositories.",
@@ -47,7 +47,7 @@
47
47
  "test": "npm run build && node scripts/shared/run-vitest-gate.mjs",
48
48
  "test:single": "npm run build && node scripts/shared/run-vitest-gate.mjs",
49
49
  "verify:guards": "node scripts/shared/run-vitest-gate.mjs --retry=2 --exclude \"**/audit-code-completion.test.mjs\" --exclude \"**/audit-code-wrapper.test.mjs\" --exclude \"**/audit/next-step.test.mjs\" --exclude \"**/seam-host-only-next-step.test.mjs\" --exclude \"**/*-e2e.test.*\" --exclude \"**/next-step-implement-dispatch.test.ts\" --exclude \"**/next-step-pipeline-dispatch.test.ts\"",
50
- "verify:checks": "node scripts/shared/profile-run.mjs verify-checks check:control-bytes check:version-gates check:loop-core-patterns check:constitutional-doc-paths check:deadcode check:doc-manifest check:philosophy-brief check:handoff-roadmap check:memory-citations check:backlog-budget check:backlog-status check:tests build verify:hosts verify:remediate-hosts smoke:packaged-audit-code smoke:packaged-remediate-code",
50
+ "verify:checks": "node scripts/shared/profile-run.mjs verify-checks check:control-bytes check:version-gates check:loop-core-patterns check:constitutional-doc-paths check:deadcode check:doc-manifest check:philosophy-brief check:handoff-roadmap check:memory-citations check:backlog-budget check:backlog-status check:tests build verify:hosts verify:remediate-hosts pack:smoke smoke:packaged-audit-code smoke:packaged-remediate-code",
51
51
  "verify:release": "npm run verify:checks && node scripts/shared/run-vitest-gate.mjs",
52
52
  "check:control-bytes": "node scripts/check-control-bytes.mjs",
53
53
  "check:deadcode": "knip --no-config-hints",
@@ -55,6 +55,7 @@
55
55
  "check:philosophy-brief": "node scripts/check-philosophy-brief.mjs",
56
56
  "verify:hosts": "node scripts/audit/verify-hosts.mjs",
57
57
  "verify:remediate-hosts": "node scripts/remediate/verify-hosts.mjs",
58
+ "pack:smoke": "node scripts/shared/smoke-tarball.mjs",
58
59
  "smoke:linked-audit-code": "node scripts/audit/smoke-linked-audit-code.mjs",
59
60
  "smoke:packaged-audit-code": "node scripts/audit/smoke-packaged-audit-code.mjs",
60
61
  "smoke:linked-remediate-code": "node scripts/remediate/smoke-linked-remediate-code.mjs",
@@ -73,6 +73,21 @@ const OPENCODE_AUDIT_BASH_PERMISSION = {
73
73
  // skipped with a warning instead of failing the whole install.
74
74
  const sharedOpenCodePermissions = await resolveSharedOpenCodePermissions();
75
75
 
76
+ // A pre-hardening deploy wrote agent-scope bash['*']='allow' (the historically
77
+ // managed broad value). Migrate exactly that value away so the generated 'ask'
78
+ // seed wins on re-deploy; any other user-authored wildcard survives untouched.
79
+ // This mirrors the install wrapper so an upgrade that only ever runs
80
+ // `npm install` converges on the same hardened agent block — otherwise the
81
+ // postinstall is the one path that keeps a broad wildcard alive.
82
+ function withoutManagedBroadBashWildcard(rule) {
83
+ const { withoutOpenCodeWildcard, OPENCODE_MANAGED_BROAD_VALUE } = sharedOpenCodePermissions;
84
+ const existing = objectValue(rule);
85
+ if (existing['*'] !== OPENCODE_MANAGED_BROAD_VALUE) {
86
+ return rule;
87
+ }
88
+ return withoutOpenCodeWildcard(existing);
89
+ }
90
+
76
91
  // Auditor agent scope (read-only agent, parity with the remediator hardening):
77
92
  // enumerated audit-code commands stay managed allows/denies, but the bash
78
93
  // wildcard defaults to "ask" (an existing user wildcard survives — the
@@ -96,7 +111,7 @@ function mergeOpenCodeAgentPermissionConfig(existingPermission, generatedPermiss
96
111
  OPENCODE_AUDIT_EDIT_PERMISSION,
97
112
  ),
98
113
  bash: mergeOpenCodeAgentPermissionRule(
99
- existingPermission.bash,
114
+ withoutManagedBroadBashWildcard(existingPermission.bash),
100
115
  generatedPermission.bash,
101
116
  withoutOpenCodeWildcard(OPENCODE_AUDIT_BASH_PERMISSION),
102
117
  ),
@@ -73,6 +73,22 @@ const OPENCODE_REMEDIATE_BASH_PERMISSION = {
73
73
  // skipped with a warning instead of failing the whole install.
74
74
  const sharedOpenCodePermissions = await resolveSharedOpenCodePermissions();
75
75
 
76
+ // A pre-hardening deploy wrote agent-scope bash['*']='allow' (the historically
77
+ // managed broad value). Migrate exactly that value away so the generated 'ask'
78
+ // seed wins on re-deploy; any other user-authored wildcard survives untouched.
79
+ // This mirrors the install wrapper so an upgrade that only ever runs
80
+ // `npm install` converges on the same hardened agent block — otherwise the
81
+ // postinstall is the one path that keeps a broad wildcard alive.
82
+ function withoutManagedBroadBashWildcard(rule) {
83
+ const { withoutOpenCodeWildcard, OPENCODE_MANAGED_BROAD_VALUE } =
84
+ sharedOpenCodePermissions;
85
+ const existing = objectValue(rule);
86
+ if (existing["*"] !== OPENCODE_MANAGED_BROAD_VALUE) {
87
+ return rule;
88
+ }
89
+ return withoutOpenCodeWildcard(existing);
90
+ }
91
+
76
92
  // Remediator agent scope: managed rules win for specific patterns; an
77
93
  // existing user wildcard survives (the managed set is passed without "*").
78
94
  function renderOpenCodeAgentPermissionConfig(existing) {
@@ -90,7 +106,7 @@ function renderOpenCodeAgentPermissionConfig(existing) {
90
106
  withoutOpenCodeWildcard(OPENCODE_REMEDIATE_EDIT_PERMISSION),
91
107
  ),
92
108
  bash: mergeOpenCodeAgentPermissionRule(
93
- existingPermission.bash,
109
+ withoutManagedBroadBashWildcard(existingPermission.bash),
94
110
  OPENCODE_REMEDIATE_BASH_PERMISSION,
95
111
  withoutOpenCodeWildcard(OPENCODE_REMEDIATE_BASH_PERMISSION),
96
112
  ),