agent-nuvira 3.3.12 → 3.3.13

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 (152) hide show
  1. package/dist/agents/agents/reasoner.d.ts.map +1 -1
  2. package/dist/agents/agents/reasoner.js +13 -0
  3. package/dist/agents/agents/reasoner.js.map +1 -1
  4. package/dist/agents/orchestrator.d.ts.map +1 -1
  5. package/dist/agents/orchestrator.js +29 -9
  6. package/dist/agents/orchestrator.js.map +1 -1
  7. package/dist/cli/chat.d.ts.map +1 -1
  8. package/dist/cli/chat.js +34 -7
  9. package/dist/cli/chat.js.map +1 -1
  10. package/dist/cli/cli-program.d.ts.map +1 -1
  11. package/dist/cli/cli-program.js +8 -0
  12. package/dist/cli/cli-program.js.map +1 -1
  13. package/dist/cli/config.d.ts.map +1 -1
  14. package/dist/cli/config.js +21 -3
  15. package/dist/cli/config.js.map +1 -1
  16. package/dist/cli/execute.d.ts.map +1 -1
  17. package/dist/cli/execute.js +6 -0
  18. package/dist/cli/execute.js.map +1 -1
  19. package/dist/cli/knowledge.d.ts +23 -0
  20. package/dist/cli/knowledge.d.ts.map +1 -0
  21. package/dist/cli/knowledge.js +132 -0
  22. package/dist/cli/knowledge.js.map +1 -0
  23. package/dist/cli/loop-executor.d.ts.map +1 -1
  24. package/dist/cli/loop-executor.js +45 -6
  25. package/dist/cli/loop-executor.js.map +1 -1
  26. package/dist/cli/omniroute-control.d.ts +88 -0
  27. package/dist/cli/omniroute-control.d.ts.map +1 -0
  28. package/dist/cli/omniroute-control.js +179 -0
  29. package/dist/cli/omniroute-control.js.map +1 -0
  30. package/dist/cli/omniroute.d.ts +21 -0
  31. package/dist/cli/omniroute.d.ts.map +1 -0
  32. package/dist/cli/omniroute.js +67 -0
  33. package/dist/cli/omniroute.js.map +1 -0
  34. package/dist/config/types.d.ts +8 -0
  35. package/dist/config/types.d.ts.map +1 -1
  36. package/dist/context/history.d.ts +21 -0
  37. package/dist/context/history.d.ts.map +1 -1
  38. package/dist/context/history.js +50 -0
  39. package/dist/context/history.js.map +1 -1
  40. package/dist/gateway/hook-contract.d.ts +173 -0
  41. package/dist/gateway/hook-contract.d.ts.map +1 -0
  42. package/dist/gateway/hook-contract.js +352 -0
  43. package/dist/gateway/hook-contract.js.map +1 -0
  44. package/dist/gateway/hooks.d.ts.map +1 -1
  45. package/dist/gateway/hooks.js +14 -0
  46. package/dist/gateway/hooks.js.map +1 -1
  47. package/dist/inference/interface.d.ts +17 -0
  48. package/dist/inference/interface.d.ts.map +1 -1
  49. package/dist/inference/model-id-validation.d.ts +57 -0
  50. package/dist/inference/model-id-validation.d.ts.map +1 -0
  51. package/dist/inference/model-id-validation.js +127 -0
  52. package/dist/inference/model-id-validation.js.map +1 -0
  53. package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
  54. package/dist/inference/openai-compat-adapter.js +12 -1
  55. package/dist/inference/openai-compat-adapter.js.map +1 -1
  56. package/dist/inference/provider-catalog.d.ts +11 -0
  57. package/dist/inference/provider-catalog.d.ts.map +1 -1
  58. package/dist/inference/provider-catalog.js +80 -0
  59. package/dist/inference/provider-catalog.js.map +1 -1
  60. package/dist/inference/route-resolver.d.ts +2 -8
  61. package/dist/inference/route-resolver.d.ts.map +1 -1
  62. package/dist/inference/route-resolver.js +17 -0
  63. package/dist/inference/route-resolver.js.map +1 -1
  64. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  65. package/dist/inference/tool-call-utils.js +10 -8
  66. package/dist/inference/tool-call-utils.js.map +1 -1
  67. package/dist/inference/tools.d.ts +1 -0
  68. package/dist/inference/tools.d.ts.map +1 -1
  69. package/dist/inference/tools.js +20 -3
  70. package/dist/inference/tools.js.map +1 -1
  71. package/dist/learning/auto-router.d.ts +53 -0
  72. package/dist/learning/auto-router.d.ts.map +1 -1
  73. package/dist/learning/auto-router.js +73 -0
  74. package/dist/learning/auto-router.js.map +1 -1
  75. package/dist/learning/error-repair.d.ts +23 -1
  76. package/dist/learning/error-repair.d.ts.map +1 -1
  77. package/dist/learning/error-repair.js +58 -0
  78. package/dist/learning/error-repair.js.map +1 -1
  79. package/dist/learning/knowledge-base.d.ts +124 -0
  80. package/dist/learning/knowledge-base.d.ts.map +1 -0
  81. package/dist/learning/knowledge-base.js +337 -0
  82. package/dist/learning/knowledge-base.js.map +1 -0
  83. package/dist/learning/model-selection.d.ts +2 -1
  84. package/dist/learning/model-selection.d.ts.map +1 -1
  85. package/dist/learning/model-selection.js +35 -2
  86. package/dist/learning/model-selection.js.map +1 -1
  87. package/dist/learning/project-docs.d.ts +83 -0
  88. package/dist/learning/project-docs.d.ts.map +1 -0
  89. package/dist/learning/project-docs.js +132 -0
  90. package/dist/learning/project-docs.js.map +1 -0
  91. package/dist/learning/quota-ledger.d.ts +13 -0
  92. package/dist/learning/quota-ledger.d.ts.map +1 -1
  93. package/dist/learning/quota-ledger.js +28 -0
  94. package/dist/learning/quota-ledger.js.map +1 -1
  95. package/dist/learning/seeded-benchmark.d.ts +14 -0
  96. package/dist/learning/seeded-benchmark.d.ts.map +1 -1
  97. package/dist/learning/seeded-benchmark.js +43 -4
  98. package/dist/learning/seeded-benchmark.js.map +1 -1
  99. package/dist/security/secret-scan.d.ts +156 -0
  100. package/dist/security/secret-scan.d.ts.map +1 -0
  101. package/dist/security/secret-scan.js +525 -0
  102. package/dist/security/secret-scan.js.map +1 -0
  103. package/dist/tools/plan-store.d.ts +24 -2
  104. package/dist/tools/plan-store.d.ts.map +1 -1
  105. package/dist/tools/plan-store.js +42 -2
  106. package/dist/tools/plan-store.js.map +1 -1
  107. package/dist/tools/registry.d.ts.map +1 -1
  108. package/dist/tools/registry.js +149 -1
  109. package/dist/tools/registry.js.map +1 -1
  110. package/dist/tools/remediation-ladder.d.ts +91 -0
  111. package/dist/tools/remediation-ladder.d.ts.map +1 -0
  112. package/dist/tools/remediation-ladder.js +308 -0
  113. package/dist/tools/remediation-ladder.js.map +1 -0
  114. package/dist/tools/run-terminal.d.ts.map +1 -1
  115. package/dist/tools/run-terminal.js +26 -2
  116. package/dist/tools/run-terminal.js.map +1 -1
  117. package/dist/tools/skills-hub.d.ts +7 -0
  118. package/dist/tools/skills-hub.d.ts.map +1 -1
  119. package/dist/tools/skills-hub.js +11 -2
  120. package/dist/tools/skills-hub.js.map +1 -1
  121. package/dist/tools/step-artifact.d.ts +35 -0
  122. package/dist/tools/step-artifact.d.ts.map +1 -0
  123. package/dist/tools/step-artifact.js +154 -0
  124. package/dist/tools/step-artifact.js.map +1 -0
  125. package/dist/tools/tool-loop.d.ts +6 -0
  126. package/dist/tools/tool-loop.d.ts.map +1 -1
  127. package/dist/tools/tool-loop.js +27 -3
  128. package/dist/tools/tool-loop.js.map +1 -1
  129. package/dist/tools/toolsets.js +4 -4
  130. package/dist/tools/toolsets.js.map +1 -1
  131. package/dist/tools/worktree.d.ts +11 -2
  132. package/dist/tools/worktree.d.ts.map +1 -1
  133. package/dist/tools/worktree.js +11 -2
  134. package/dist/tools/worktree.js.map +1 -1
  135. package/dist/web-dashboard/server.d.ts +29 -0
  136. package/dist/web-dashboard/server.d.ts.map +1 -1
  137. package/dist/web-dashboard/server.js +372 -5
  138. package/dist/web-dashboard/server.js.map +1 -1
  139. package/dist/web-dashboard/src/types.d.ts +66 -0
  140. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  141. package/dist/web-dashboard/workspace-guard.d.ts +7 -0
  142. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  143. package/dist/web-dashboard/workspace-guard.js +70 -0
  144. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  145. package/package.json +1 -1
  146. package/src/web-dashboard/public/assets/index-DhiuR4S2.js +210 -0
  147. package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +1 -0
  148. package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
  149. package/src/web-dashboard/public/index.html +2 -2
  150. package/src/web-dashboard/public/assets/index-BrZcYhy6.js +0 -207
  151. package/src/web-dashboard/public/assets/index-BrZcYhy6.js.map +0 -1
  152. package/src/web-dashboard/public/assets/index-DsWczTa6.css +0 -1
@@ -0,0 +1,156 @@
1
+ /**
2
+ * secret-scan — find secret-shaped strings in a working tree, ON DEMAND.
3
+ *
4
+ * WHY THIS EXISTS. Nuvira writes code and commits it. "Did I just stage a key?"
5
+ * is a real, recurring failure mode in that loop, and it is the one the toolchain
6
+ * cannot answer today: `redact()` (enterprise/secrets.ts) keeps secrets out of
7
+ * logs and history, but nothing ever LOOKS for them in the user's files.
8
+ *
9
+ * RELATIONSHIP TO `redact()`: deliberately complementary, not a second opinion.
10
+ * `redact()` is a SCRUBBER — it masks and never reports. This module is a
11
+ * DETECTOR — it reports what and where, and masks the value in its own output
12
+ * (reusing the SAME `maskSecret`/`redact` primitives and the SAME
13
+ * `KNOWN_KEY_PREFIXES` table), so what we detect can never drift from what we
14
+ * redact. One pattern source of truth, two readers.
15
+ *
16
+ * DESIGN CONSTRAINTS
17
+ * - Dependency-free and LOCAL. No `gitleaks`/`ggshield` binary, no network, no
18
+ * vendor. That is the whole point of the local-first path: a scanner that
19
+ * reads every file is a privacy decision, so the default must keep the data
20
+ * on the machine.
21
+ * - PURE + DETERMINISTIC at the text level (`scanText`), so it is unit-testable
22
+ * without a filesystem; `scanDirectory` is the thin I/O wrapper.
23
+ * - NEVER a security guarantee. It is a lint: it catches KNOWN shapes and common
24
+ * assignments, and a clean result means "nothing matched", not "no secrets".
25
+ * The summary says so, because a scanner that overclaims is worse than none.
26
+ */
27
+ export type SecretSeverity = 'critical' | 'high' | 'medium';
28
+ export interface SecretPattern {
29
+ /** Stable id used in the report. */
30
+ id: string;
31
+ /** Human label, e.g. 'AWS access key id'. */
32
+ label: string;
33
+ severity: SecretSeverity;
34
+ /** Global regex; `lastIndex` is reset before every use. */
35
+ re: RegExp;
36
+ }
37
+ export interface SecretFinding {
38
+ /** Workspace-relative path (never an absolute path — see scanDirectory). */
39
+ path: string;
40
+ /** 1-based line number. */
41
+ line: number;
42
+ /** 1-based column of the match start. */
43
+ column: number;
44
+ id: string;
45
+ label: string;
46
+ severity: SecretSeverity;
47
+ /** Masked form of the matched value (`gsk_…S9ak`). NEVER the real value. */
48
+ masked: string;
49
+ /** The containing line with every secret-shaped substring already redacted. */
50
+ preview: string;
51
+ }
52
+ export interface SecretScanResult {
53
+ root: string;
54
+ filesScanned: number;
55
+ filesSkipped: number;
56
+ /** True when the file cap or size cap stopped the walk early. */
57
+ truncated: boolean;
58
+ findings: SecretFinding[];
59
+ bySeverity: Record<SecretSeverity, number>;
60
+ /** One truthful line for a human/model — never overclaims a clean scan. */
61
+ summary: string;
62
+ }
63
+ /**
64
+ * High-confidence, low-false-positive shapes. Ordered most-specific first so a
65
+ * value is attributed to the narrowest pattern that matches it.
66
+ *
67
+ * Deliberately NOT included: a bare high-entropy heuristic. It is the classic
68
+ * source of "your scan found 4000 secrets" noise (git SHAs, hashes, minified
69
+ * bundles), and a lint nobody trusts gets switched off — which is worse than a
70
+ * narrower one people keep on.
71
+ */
72
+ export declare const SECRET_PATTERNS: SecretPattern[];
73
+ /** Is this matched VALUE obviously a placeholder rather than a real secret? */
74
+ export declare function looksLikePlaceholder(value: string): boolean;
75
+ /**
76
+ * Find secret-shaped substrings in `text`. Pure and synchronous — the whole
77
+ * detector lives here, so it can be tested without touching a filesystem.
78
+ *
79
+ * @param text Content to scan (a file body, a diff, a log line).
80
+ * @param path Label attached to each finding (workspace-relative).
81
+ */
82
+ export declare function scanText(text: string, path?: string): Omit<SecretFinding, 'preview'>[];
83
+ /** Per-file read cap. A secret never hides beyond this; a minified bundle does. */
84
+ export declare const MAX_FILE_BYTES = 1000000;
85
+ /** Default cap on files visited per scan, so a huge monorepo cannot hang a turn. */
86
+ export declare const DEFAULT_MAX_FILES = 5000;
87
+ /** Should this workspace-relative path be skipped? (exported for tests) */
88
+ export declare function shouldSkipPath(relPath: string): boolean;
89
+ export interface ScanDirectoryOptions {
90
+ /** Max files to read (default DEFAULT_MAX_FILES). */
91
+ maxFiles?: number;
92
+ /** Per-file byte cap (default MAX_FILE_BYTES). */
93
+ maxFileBytes?: number;
94
+ /** Restrict the walk to one workspace-relative subtree. */
95
+ subdir?: string;
96
+ }
97
+ /**
98
+ * Scan a directory tree for secret-shaped content.
99
+ *
100
+ * The walk is bounded twice (file count + per-file size) and skips binary dirs
101
+ * and generated artifacts. Findings carry a WORKSPACE-RELATIVE path so a report
102
+ * can be pasted into a ticket without leaking the operator's home directory.
103
+ * Read failures are counted as skipped, never thrown — a scan must not die on
104
+ * one unreadable file.
105
+ */
106
+ export declare function scanDirectory(root: string, options?: ScanDirectoryOptions): SecretScanResult;
107
+ /** Default cap on commits walked. */
108
+ export declare const DEFAULT_MAX_HISTORY_COMMITS = 500;
109
+ /** Default cap on distinct blobs read, so a huge history cannot hang a turn. */
110
+ export declare const DEFAULT_MAX_HISTORY_BLOBS = 2000;
111
+ /** Per-blob read cap (mirrors MAX_FILE_BYTES). */
112
+ export declare const MAX_HISTORY_BLOB_BYTES = 1000000;
113
+ /** A finding plus the commit it was found in (best-effort, may be undefined). */
114
+ export interface HistoryFinding extends SecretFinding {
115
+ /** Abbreviated commit that last introduced this blob version, when known. */
116
+ commit?: string;
117
+ }
118
+ export interface SecretHistoryScanResult {
119
+ root: string;
120
+ /** False when the path is not a git work tree, or `git` is unavailable. */
121
+ isGitRepo: boolean;
122
+ commitsScanned: number;
123
+ blobsScanned: number;
124
+ blobsSkipped: number;
125
+ /** True when a cap stopped the walk early — coverage is partial. */
126
+ truncated: boolean;
127
+ findings: HistoryFinding[];
128
+ bySeverity: Record<SecretSeverity, number>;
129
+ summary: string;
130
+ }
131
+ export interface ScanHistoryOptions {
132
+ /** Max commits to walk (default DEFAULT_MAX_HISTORY_COMMITS). */
133
+ maxCommits?: number;
134
+ /** Max distinct blobs to read (default DEFAULT_MAX_HISTORY_BLOBS). */
135
+ maxBlobs?: number;
136
+ /** Per-blob byte cap (default MAX_HISTORY_BLOB_BYTES). */
137
+ maxBlobBytes?: number;
138
+ /** Restrict to one workspace-relative subtree. */
139
+ subdir?: string;
140
+ }
141
+ /**
142
+ * Scan reachable git history for secret-shaped content.
143
+ *
144
+ * Walks `git rev-list --objects --all` to enumerate every blob version, keeps
145
+ * only blobs whose path survives {@link shouldSkipPath}, reads the small ones
146
+ * through a single batched `git cat-file`, and runs the SAME {@link scanText}
147
+ * detector as the tree scan — one pattern source of truth across both surfaces.
148
+ * A finding's path is labelled `<path>@<commit>` when the introducing commit can
149
+ * be resolved (best-effort; the blob sha stand-in is used otherwise).
150
+ */
151
+ export declare function scanGitHistory(root: string, options?: ScanHistoryOptions): SecretHistoryScanResult;
152
+ /** Render a git-history result as a compact report a model or human can act on. */
153
+ export declare function formatSecretHistoryScan(result: SecretHistoryScanResult): string;
154
+ /** Render a result as a compact report a model or a human can act on. */
155
+ export declare function formatSecretScan(result: SecretScanResult): string;
156
+ //# sourceMappingURL=secret-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-scan.d.ts","sourceRoot":"","sources":["../../src/security/secret-scan.ts"],"names":[],"mappings":"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"}