instar 1.3.485 → 1.3.487
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/commands/reflect.d.ts.map +1 -1
- package/dist/commands/reflect.js +4 -0
- package/dist/commands/reflect.js.map +1 -1
- package/dist/commands/route.d.ts.map +1 -1
- package/dist/commands/route.js +3 -0
- package/dist/commands/route.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +14 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/CircuitBreakingIntelligenceProvider.d.ts +7 -0
- package/dist/core/CircuitBreakingIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/CircuitBreakingIntelligenceProvider.js +50 -0
- package/dist/core/CircuitBreakingIntelligenceProvider.js.map +1 -1
- package/dist/core/ClaudeCliIntelligenceProvider.d.ts +5 -0
- package/dist/core/ClaudeCliIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/ClaudeCliIntelligenceProvider.js +6 -1
- package/dist/core/ClaudeCliIntelligenceProvider.js.map +1 -1
- package/dist/core/CodexCliIntelligenceProvider.d.ts +58 -0
- package/dist/core/CodexCliIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/CodexCliIntelligenceProvider.js +293 -27
- package/dist/core/CodexCliIntelligenceProvider.js.map +1 -1
- package/dist/core/GeminiCliIntelligenceProvider.d.ts +8 -0
- package/dist/core/GeminiCliIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/GeminiCliIntelligenceProvider.js +8 -0
- package/dist/core/GeminiCliIntelligenceProvider.js.map +1 -1
- package/dist/core/MessagingToneGate.d.ts +23 -2
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +15 -1
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +61 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SafeGitExecutor.d.ts.map +1 -1
- package/dist/core/SafeGitExecutor.js +79 -1
- package/dist/core/SafeGitExecutor.js.map +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +22 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/TelegramRelay.d.ts +1 -0
- package/dist/core/TelegramRelay.d.ts.map +1 -1
- package/dist/core/TelegramRelay.js +9 -1
- package/dist/core/TelegramRelay.js.map +1 -1
- package/dist/core/componentCategories.d.ts.map +1 -1
- package/dist/core/componentCategories.js +10 -0
- package/dist/core/componentCategories.js.map +1 -1
- package/dist/core/intelligenceProviderFactory.d.ts +8 -0
- package/dist/core/intelligenceProviderFactory.d.ts.map +1 -1
- package/dist/core/intelligenceProviderFactory.js +1 -0
- package/dist/core/intelligenceProviderFactory.js.map +1 -1
- package/dist/core/raw-file-path.d.ts +33 -0
- package/dist/core/raw-file-path.d.ts.map +1 -0
- package/dist/core/raw-file-path.js +105 -0
- package/dist/core/raw-file-path.js.map +1 -0
- package/dist/core/types.d.ts +17 -9
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/messaging/OutboundAdvisory.d.ts +152 -0
- package/dist/messaging/OutboundAdvisory.d.ts.map +1 -0
- package/dist/messaging/OutboundAdvisory.js +453 -0
- package/dist/messaging/OutboundAdvisory.js.map +1 -0
- package/dist/messaging/TelegramAdapter.d.ts +6 -0
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +4 -1
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/messaging/pending-relay-store.d.ts +7 -0
- package/dist/messaging/pending-relay-store.d.ts.map +1 -1
- package/dist/messaging/pending-relay-store.js +9 -3
- package/dist/messaging/pending-relay-store.js.map +1 -1
- package/dist/messaging/slack/SlackAdapter.d.ts +3 -0
- package/dist/messaging/slack/SlackAdapter.d.ts.map +1 -1
- package/dist/messaging/slack/SlackAdapter.js +8 -1
- package/dist/messaging/slack/SlackAdapter.js.map +1 -1
- package/dist/monitoring/FeatureMetricsLedger.d.ts +123 -1
- package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
- package/dist/monitoring/FeatureMetricsLedger.js +211 -25
- package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
- package/dist/monitoring/delivery-failure-sentinel.d.ts +6 -1
- package/dist/monitoring/delivery-failure-sentinel.d.ts.map +1 -1
- package/dist/monitoring/delivery-failure-sentinel.js +15 -3
- package/dist/monitoring/delivery-failure-sentinel.js.map +1 -1
- package/dist/providers/adapters/anthropic-interactive-pool/index.d.ts.map +1 -1
- package/dist/providers/adapters/anthropic-interactive-pool/index.js +1 -0
- package/dist/providers/adapters/anthropic-interactive-pool/index.js.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts +93 -0
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.js +339 -0
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.js.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/codexUsageParser.d.ts +84 -0
- package/dist/providers/adapters/openai-codex/transport/codexUsageParser.d.ts.map +1 -0
- package/dist/providers/adapters/openai-codex/transport/codexUsageParser.js +208 -0
- package/dist/providers/adapters/openai-codex/transport/codexUsageParser.js.map +1 -0
- package/dist/providers/uxConfirm/OverrideDetector.d.ts.map +1 -1
- package/dist/providers/uxConfirm/OverrideDetector.js +1 -0
- package/dist/providers/uxConfirm/OverrideDetector.js.map +1 -1
- package/dist/providers/uxConfirm/TaskClassifier.d.ts.map +1 -1
- package/dist/providers/uxConfirm/TaskClassifier.js +1 -0
- package/dist/providers/uxConfirm/TaskClassifier.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +10 -3
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/scheduler/JobScheduler.d.ts.map +1 -1
- package/dist/scheduler/JobScheduler.js +8 -0
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/security/LLMSanitizer.d.ts.map +1 -1
- package/dist/security/LLMSanitizer.js +7 -1
- package/dist/security/LLMSanitizer.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +22 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -1
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +12 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +226 -4
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/PipeSessionSpawner.d.ts.map +1 -1
- package/dist/threadline/PipeSessionSpawner.js +2 -0
- package/dist/threadline/PipeSessionSpawner.js.map +1 -1
- package/dist/threadline/WarrantsReplyGate.d.ts.map +1 -1
- package/dist/threadline/WarrantsReplyGate.js +5 -1
- package/dist/threadline/WarrantsReplyGate.js.map +1 -1
- package/package.json +4 -2
- package/scripts/lint-llm-attribution.js +418 -0
- package/scripts/lint-no-direct-destructive.js +4 -0
- package/scripts/pre-push-gate.js +24 -0
- package/src/data/builtin-manifest.json +67 -67
- package/src/scaffold/templates.ts +10 -3
- package/src/templates/scripts/telegram-reply.sh +202 -10
- package/upgrades/1.3.486.md +38 -0
- package/upgrades/1.3.487.md +39 -0
- package/upgrades/side-effects/outbound-advisory-inform-only.md +252 -0
- package/upgrades/side-effects/token-audit-completeness.md +84 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentCategories.js","sourceRoot":"","sources":["../../src/core/componentCategories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO;CAChD,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,oBAA0C,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgD;IAC7E,uEAAuE;IACvE,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,uBAAuB,EAAE,UAAU;IACnC,gBAAgB,EAAE,UAAU;IAC5B,kBAAkB,EAAE,UAAU;IAC9B,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,eAAe,EAAE,UAAU;IAC3B,mBAAmB,EAAE,UAAU;IAC/B,wBAAwB,EAAE,UAAU;IACpC,mBAAmB,EAAE,UAAU;IAC/B,eAAe,EAAE,UAAU;IAC3B,mBAAmB,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"componentCategories.js","sourceRoot":"","sources":["../../src/core/componentCategories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO;CAChD,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,oBAA0C,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgD;IAC7E,uEAAuE;IACvE,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,uBAAuB,EAAE,UAAU;IACnC,gBAAgB,EAAE,UAAU;IAC5B,kBAAkB,EAAE,UAAU;IAC9B,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,eAAe,EAAE,UAAU;IAC3B,mBAAmB,EAAE,UAAU;IAC/B,wBAAwB,EAAE,UAAU;IACpC,mBAAmB,EAAE,UAAU;IAC/B,eAAe,EAAE,UAAU;IAC3B,mBAAmB,EAAE,UAAU;IAC/B,wEAAwE;IACxE,iDAAiD;IACjD,0BAA0B,EAAE,UAAU;IACtC,iEAAiE;IACjE,YAAY,EAAE,UAAU;IAExB,iDAAiD;IACjD,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM;IACpB,eAAe,EAAE,MAAM;IACvB,qBAAqB,EAAE,MAAM;IAC7B,iBAAiB,EAAE,MAAM;IACzB,mBAAmB,EAAE,MAAM;IAC3B,aAAa,EAAE,MAAM;IACrB,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,MAAM;IACzB,2EAA2E;IAC3E,YAAY,EAAE,MAAM;IACpB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM;IACxB,cAAc,EAAE,MAAM;IAEtB,gEAAgE;IAChE,YAAY,EAAE,WAAW;IACzB,kBAAkB,EAAE,WAAW;IAC/B,iBAAiB,EAAE,WAAW;IAC9B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,WAAW;IAC5B,mBAAmB,EAAE,WAAW;IAChC,mBAAmB,EAAE,WAAW;IAChC,4BAA4B,EAAE,WAAW;IACzC,kBAAkB,EAAE,WAAW;IAE/B,8BAA8B;IAC9B,kBAAkB,EAAE,KAAK;IACzB,8EAA8E;IAC9E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,+EAA+E;IAC/E,iBAAiB,EAAE,KAAK;IACxB,8EAA8E;IAC9E,gFAAgF;IAChF,gFAAgF;IAChF,sEAAsE;IACtE,4EAA4E;IAC5E,2BAA2B,EAAE,KAAK;CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA6B;IAChE,IAAI,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC;IAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;AAC7C,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -91,6 +91,14 @@ export interface BuildIntelligenceProviderOptions {
|
|
|
91
91
|
* Even when true, allowed calls are audit-logged with a cost warning.
|
|
92
92
|
*/
|
|
93
93
|
piAllowAnthropicProviders?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* codex-cli only (token-audit-completeness): per-call kill-switch read for
|
|
96
|
+
* exec-json mode. Construction sites with config thread
|
|
97
|
+
* `createCodexExecJsonConfigResolver()`; absent, the provider falls back to
|
|
98
|
+
* env `INSTAR_CODEX_EXEC_JSON !== '0'` so config-less sites keep a working
|
|
99
|
+
* rollback lever.
|
|
100
|
+
*/
|
|
101
|
+
resolveExecJson?: () => boolean;
|
|
94
102
|
}
|
|
95
103
|
/**
|
|
96
104
|
* Build an IntelligenceProvider for the given framework. Returns null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelligenceProviderFactory.d.ts","sourceRoot":"","sources":["../../src/core/intelligenceProviderFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AAE1G;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1F,MAAM,WAAW,gCAAgC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,oBAAoB,CAAC;QAC3B,4EAA4E;QAC5E,WAAW,EAAE,eAAe,CAAC;QAC7B,gEAAgE;QAChE,aAAa,EAAE,MAAM,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;QAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;QAChD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;KACrD,CAAC;IACF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"intelligenceProviderFactory.d.ts","sourceRoot":"","sources":["../../src/core/intelligenceProviderFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AAE1G;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1F,MAAM,WAAW,gCAAgC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,oBAAoB,CAAC;QAC3B,4EAA4E;QAC5E,WAAW,EAAE,eAAe,CAAC;QAC7B,gEAAgE;QAChE,aAAa,EAAE,MAAM,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;QAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;QAChD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;KACrD,CAAC;IACF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gCAAqC,GAC7C,oBAAoB,GAAG,IAAI,CA0G7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,qBAAqB,GAAG,IAAI,CAOnG"}
|
|
@@ -74,6 +74,7 @@ export function buildIntelligenceProvider(options = {}) {
|
|
|
74
74
|
return wrapIntelligenceWithCircuitBreaker(new CodexCliIntelligenceProvider({
|
|
75
75
|
codexPath: path,
|
|
76
76
|
...(options.workingDirectory ? { workingDirectory: options.workingDirectory } : {}),
|
|
77
|
+
...(options.resolveExecJson ? { resolveExecJson: options.resolveExecJson } : {}),
|
|
77
78
|
}), options.breaker);
|
|
78
79
|
}
|
|
79
80
|
case 'gemini-cli': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelligenceProviderFactory.js","sourceRoot":"","sources":["../../src/core/intelligenceProviderFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAE9F,OAAO,EACL,2BAA2B,GAI5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mCAAmC,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"intelligenceProviderFactory.js","sourceRoot":"","sources":["../../src/core/intelligenceProviderFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* raw-file-path — deterministic detector for literal filesystem paths in
|
|
3
|
+
* user-facing messages.
|
|
4
|
+
*
|
|
5
|
+
* Sibling of `localhost-link.ts`, held to the same linear-regex discipline —
|
|
6
|
+
* but unlike the localhost guard this is a pure SIGNAL, never a block
|
|
7
|
+
* (spec: docs/specs/outbound-jargon-filepath-gap.md §2.3). A literal repo
|
|
8
|
+
* path shown to a user ("/Users/justin/...", ".instar/config.json",
|
|
9
|
+
* "src/core/Foo.ts") is something the user usually can't act on; the
|
|
10
|
+
* existing B2_FILE_PATH judgment belongs to the LLM authority, and on
|
|
11
|
+
* automated sends the preflight advisory informs the SENDER. This detector
|
|
12
|
+
* only surfaces the observation.
|
|
13
|
+
*
|
|
14
|
+
* Hard requirements (r2 convergence):
|
|
15
|
+
* - ReDoS-safe: linear, non-backtracking patterns; bounded segment count
|
|
16
|
+
* and length; an indexOf prescreen so the regex only runs when a path is
|
|
17
|
+
* plausibly present.
|
|
18
|
+
* - Never matches inside an `http(s)://` URL — URLs containing paths are
|
|
19
|
+
* the legitimate form to preserve.
|
|
20
|
+
* - Bounded match echo: the returned match is the regex token (whose char
|
|
21
|
+
* class already stops at whitespace/quote/`?`/`#`/`)`), truncated to
|
|
22
|
+
* 120 chars, so a secret adjacent to a path can never ride into
|
|
23
|
+
* logs/advisories/transcripts.
|
|
24
|
+
* - Callers wrap every call fail-OPEN: a throw skips the signal, never
|
|
25
|
+
* withholds a message and never 500s a route.
|
|
26
|
+
*/
|
|
27
|
+
export interface RawFilePathResult {
|
|
28
|
+
detected: boolean;
|
|
29
|
+
/** First offending path, bounded to 120 chars — safe to echo in advisories/audits. */
|
|
30
|
+
match?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function detectRawFilePath(text: string): RawFilePathResult;
|
|
33
|
+
//# sourceMappingURL=raw-file-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-file-path.d.ts","sourceRoot":"","sources":["../../src/core/raw-file-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAmCH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA2BD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAsBjE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* raw-file-path — deterministic detector for literal filesystem paths in
|
|
3
|
+
* user-facing messages.
|
|
4
|
+
*
|
|
5
|
+
* Sibling of `localhost-link.ts`, held to the same linear-regex discipline —
|
|
6
|
+
* but unlike the localhost guard this is a pure SIGNAL, never a block
|
|
7
|
+
* (spec: docs/specs/outbound-jargon-filepath-gap.md §2.3). A literal repo
|
|
8
|
+
* path shown to a user ("/Users/justin/...", ".instar/config.json",
|
|
9
|
+
* "src/core/Foo.ts") is something the user usually can't act on; the
|
|
10
|
+
* existing B2_FILE_PATH judgment belongs to the LLM authority, and on
|
|
11
|
+
* automated sends the preflight advisory informs the SENDER. This detector
|
|
12
|
+
* only surfaces the observation.
|
|
13
|
+
*
|
|
14
|
+
* Hard requirements (r2 convergence):
|
|
15
|
+
* - ReDoS-safe: linear, non-backtracking patterns; bounded segment count
|
|
16
|
+
* and length; an indexOf prescreen so the regex only runs when a path is
|
|
17
|
+
* plausibly present.
|
|
18
|
+
* - Never matches inside an `http(s)://` URL — URLs containing paths are
|
|
19
|
+
* the legitimate form to preserve.
|
|
20
|
+
* - Bounded match echo: the returned match is the regex token (whose char
|
|
21
|
+
* class already stops at whitespace/quote/`?`/`#`/`)`), truncated to
|
|
22
|
+
* 120 chars, so a secret adjacent to a path can never ride into
|
|
23
|
+
* logs/advisories/transcripts.
|
|
24
|
+
* - Callers wrap every call fail-OPEN: a throw skips the signal, never
|
|
25
|
+
* withholds a message and never 500s a route.
|
|
26
|
+
*/
|
|
27
|
+
/** Truncation cap for the echoed match (privacy bound on adjacent content). */
|
|
28
|
+
const MATCH_ECHO_MAX = 120;
|
|
29
|
+
/** Defensive input cap — callers already cap analyzed text (64KB at the
|
|
30
|
+
* preflight route); this keeps the detector itself bounded regardless. */
|
|
31
|
+
const INPUT_MAX = 64 * 1024;
|
|
32
|
+
/**
|
|
33
|
+
* Path-segment char class: stops at whitespace, quotes, `?`, `#`, `)`,
|
|
34
|
+
* backticks and other prose punctuation by construction. Bounded segment
|
|
35
|
+
* length (1–64) and bounded segment count keep the scan linear.
|
|
36
|
+
*
|
|
37
|
+
* Three alternatives, all anchored on a real separator so prose like
|
|
38
|
+
* "and/or" or "TCP/IP" cannot match:
|
|
39
|
+
* A) absolute or home paths with at least two segments: /Users/justin/x, ~/.config/foo
|
|
40
|
+
* B) dot-directory relative paths: .instar/config.json, .claude/hooks/x
|
|
41
|
+
* C) repo-relative paths under well-known dirs: src/core/Foo.ts, logs/server.log
|
|
42
|
+
*/
|
|
43
|
+
const SEG = '[A-Za-z0-9._-]{1,64}';
|
|
44
|
+
const RAW_FILE_PATH_RE = new RegExp(
|
|
45
|
+
// A: "/seg/seg..." or "~/seg/seg..." (>= 2 segments so "/tmp" alone or a
|
|
46
|
+
// lone slash in prose stays legal)
|
|
47
|
+
`(?:(?:~)?/${SEG}(?:/${SEG}){1,12}` +
|
|
48
|
+
// B: ".instar/...", ".claude/...", ".github/...", ".husky/..." (single
|
|
49
|
+
// segment after the dot-dir is enough — ".instar/config.json")
|
|
50
|
+
`|\\.(?:instar|claude|github|husky|vscode|config)/${SEG}(?:/${SEG}){0,12}` +
|
|
51
|
+
// C: repo-relative under well-known top-level dirs; require the word
|
|
52
|
+
// boundary via a non-path char or string start (handled in code, not
|
|
53
|
+
// lookbehind, to keep the pattern simple and linear)
|
|
54
|
+
`|(?:src|docs|tests|scripts|logs|state|upgrades|dist|node_modules)/${SEG}(?:/${SEG}){0,12})`, 'g');
|
|
55
|
+
/**
|
|
56
|
+
* True when `index` sits inside a scheme-bearing URL token: the
|
|
57
|
+
* whitespace-delimited token containing the match start carries "://"
|
|
58
|
+
* before the match. Linear scan-back, bounded by the token itself.
|
|
59
|
+
*/
|
|
60
|
+
function insideUrl(text, index) {
|
|
61
|
+
let start = index;
|
|
62
|
+
while (start > 0 && !/\s/.test(text[start - 1]))
|
|
63
|
+
start--;
|
|
64
|
+
const prefix = text.slice(start, index);
|
|
65
|
+
// `://` fully before the match, OR the match starts at the second slash of
|
|
66
|
+
// a scheme separator (prefix ends with `:/` — e.g. match begins at
|
|
67
|
+
// "/example.com/…" inside "https://example.com/…").
|
|
68
|
+
return prefix.includes('://') || /:\/$/.test(prefix);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* For alternative C (bare repo-relative prefixes like "src/"), require a
|
|
72
|
+
* word boundary on the left so "missrc/foo" or "RandomLogs/x" can't match.
|
|
73
|
+
* Alternatives A/B self-anchor on '/', '~' or '.'.
|
|
74
|
+
*/
|
|
75
|
+
function hasWordBoundaryLeft(text, index) {
|
|
76
|
+
if (index === 0)
|
|
77
|
+
return true;
|
|
78
|
+
return !/[A-Za-z0-9._\-/]/.test(text[index - 1]);
|
|
79
|
+
}
|
|
80
|
+
export function detectRawFilePath(text) {
|
|
81
|
+
if (typeof text !== 'string' || text.length === 0)
|
|
82
|
+
return { detected: false };
|
|
83
|
+
const input = text.length > INPUT_MAX ? text.slice(0, INPUT_MAX) : text;
|
|
84
|
+
// indexOf prescreen — the regex only runs when a path separator exists.
|
|
85
|
+
if (!input.includes('/'))
|
|
86
|
+
return { detected: false };
|
|
87
|
+
RAW_FILE_PATH_RE.lastIndex = 0;
|
|
88
|
+
let m;
|
|
89
|
+
while ((m = RAW_FILE_PATH_RE.exec(input)) !== null) {
|
|
90
|
+
const token = m[0];
|
|
91
|
+
const at = m.index;
|
|
92
|
+
// Never flag a path that lives inside an http(s):// URL.
|
|
93
|
+
if (insideUrl(input, at))
|
|
94
|
+
continue;
|
|
95
|
+
// Bare repo-relative alternative needs a real word boundary.
|
|
96
|
+
const firstChar = token[0];
|
|
97
|
+
if (firstChar !== '/' && firstChar !== '~' && firstChar !== '.') {
|
|
98
|
+
if (!hasWordBoundaryLeft(input, at))
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
return { detected: true, match: token.slice(0, MATCH_ECHO_MAX) };
|
|
102
|
+
}
|
|
103
|
+
return { detected: false };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=raw-file-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-file-path.js","sourceRoot":"","sources":["../../src/core/raw-file-path.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -798,27 +798,35 @@ export interface IntelligenceOptions {
|
|
|
798
798
|
};
|
|
799
799
|
/**
|
|
800
800
|
* Optional token-usage callback (Iris-audit item 1, spec
|
|
801
|
-
* iris-audit-session-observability.md
|
|
802
|
-
*
|
|
803
|
-
*
|
|
804
|
-
*
|
|
801
|
+
* iris-audit-session-observability.md; contract widened by
|
|
802
|
+
* token-audit-completeness). When the underlying provider can surface
|
|
803
|
+
* usage — e.g. ClaudeCliIntelligenceProvider parsing `claude -p
|
|
804
|
+
* --output-format json`, or CodexCliIntelligenceProvider parsing the
|
|
805
|
+
* `codex exec --json` event stream — it invokes this EXACTLY ONCE PER CALL
|
|
806
|
+
* WHENEVER USAGE WAS PARSED, INCLUDING CALLS THAT SUBSEQUENTLY REJECT
|
|
807
|
+
* (a timeout-killed call's already-burned tokens must still reach the
|
|
808
|
+
* ledger's error row — under-reporting failed-call cost is the inversion
|
|
809
|
+
* of auditability). `cachedTokens` is an informational SUBSET of
|
|
810
|
+
* `inputTokens` (cache-read tokens; fresh cost = inputTokens −
|
|
811
|
+
* cachedTokens). ADDITIVE and OPTIONAL: evaluate() still returns
|
|
805
812
|
* Promise<string>, so every existing caller is byte-identical. The wrapper
|
|
806
813
|
* CircuitBreakingIntelligenceProvider sets it to feed per-feature token
|
|
807
|
-
* counts into the metrics ledger (/metrics/features)
|
|
808
|
-
* reported 0 because no usage ever reached the tap.
|
|
814
|
+
* counts into the metrics ledger (/metrics/features).
|
|
809
815
|
*/
|
|
810
816
|
onUsage?: (usage: {
|
|
811
817
|
inputTokens: number;
|
|
812
818
|
outputTokens: number;
|
|
819
|
+
cachedTokens?: number;
|
|
813
820
|
}) => void;
|
|
814
821
|
/**
|
|
815
822
|
* Observable Intelligence standard (docs/specs/observable-intelligence.md):
|
|
816
823
|
* surface the resolved provider/model so the per-feature metrics funnel can
|
|
817
824
|
* record WHICH provider + model actually ran on this call. Distinct from
|
|
818
825
|
* onUsage on purpose — onUsage only fires when a provider can parse token
|
|
819
|
-
* counts (
|
|
820
|
-
*
|
|
821
|
-
*
|
|
826
|
+
* counts (claude, codex in exec-json mode, and pi can; gemini and the
|
|
827
|
+
* interactive pool cannot), so tying model to it would leave the providers
|
|
828
|
+
* we most need to audit unlabeled. Every provider invokes onModel once per
|
|
829
|
+
* call regardless of whether it can report tokens.
|
|
822
830
|
* ADDITIVE + OPTIONAL: evaluate() still returns Promise<string>; existing
|
|
823
831
|
* callers are byte-identical. The wrapper CircuitBreakingIntelligenceProvider
|
|
824
832
|
* sets it to feed model/framework into the metrics ledger.
|