@yiaany/ghostapi 0.1.9 → 0.2.0

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 (292) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CONTRIBUTING.md +132 -119
  3. package/LICENSE +21 -21
  4. package/PROVENANCE.md +13 -0
  5. package/README.md +78 -84
  6. package/SECURITY.md +56 -53
  7. package/dist/actions/gateway.js +320 -72
  8. package/dist/actions/gateway.js.map +1 -1
  9. package/dist/actions/index.d.ts +2 -2
  10. package/dist/actions/index.js +1 -1
  11. package/dist/actions/index.js.map +1 -1
  12. package/dist/agents/agentPrompt.js +7 -5
  13. package/dist/agents/agentPrompt.js.map +1 -1
  14. package/dist/ai/aiClient.js +5 -5
  15. package/dist/ai/aiClient.js.map +1 -1
  16. package/dist/ai/aiGenerator.js +66 -26
  17. package/dist/ai/aiGenerator.js.map +1 -1
  18. package/dist/ai/genericInference.js +151 -36
  19. package/dist/ai/genericInference.js.map +1 -1
  20. package/dist/ai/prompts.js +55 -49
  21. package/dist/ai/prompts.js.map +1 -1
  22. package/dist/approvals/approvalInbox.js +649 -133
  23. package/dist/approvals/approvalInbox.js.map +1 -1
  24. package/dist/approvals/index.d.ts +2 -2
  25. package/dist/approvals/index.js +1 -1
  26. package/dist/approvals/index.js.map +1 -1
  27. package/dist/behavior/behaviorStore.js +34 -14
  28. package/dist/behavior/behaviorStore.js.map +1 -1
  29. package/dist/cache/index.js +14 -5
  30. package/dist/cache/index.js.map +1 -1
  31. package/dist/cli/index.js +226 -93
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/openUrl.js +17 -3
  34. package/dist/cli/openUrl.js.map +1 -1
  35. package/dist/cli/parser.js +79 -18
  36. package/dist/cli/parser.js.map +1 -1
  37. package/dist/config/dataPaths.js +4 -2
  38. package/dist/config/dataPaths.js.map +1 -1
  39. package/dist/config/localConfig.js +5 -2
  40. package/dist/config/localConfig.js.map +1 -1
  41. package/dist/config/serverConfig.js +11 -5
  42. package/dist/config/serverConfig.js.map +1 -1
  43. package/dist/contracts/contract.js +311 -83
  44. package/dist/contracts/contract.js.map +1 -1
  45. package/dist/contracts/index.d.ts +2 -2
  46. package/dist/contracts/index.js +1 -1
  47. package/dist/contracts/index.js.map +1 -1
  48. package/dist/credentials/credentialBroker.js +391 -79
  49. package/dist/credentials/credentialBroker.js.map +1 -1
  50. package/dist/credentials/index.d.ts +2 -2
  51. package/dist/credentials/index.js +1 -1
  52. package/dist/credentials/index.js.map +1 -1
  53. package/dist/dashboard/app.js +823 -685
  54. package/dist/dashboard/dashboard.js.map +1 -1
  55. package/dist/dashboard/index.html +704 -267
  56. package/dist/dashboard/styles.css +1040 -349
  57. package/dist/egress/capabilities.js +55 -25
  58. package/dist/egress/capabilities.js.map +1 -1
  59. package/dist/egress/linuxBootstrap.js +47 -11
  60. package/dist/egress/linuxBootstrap.js.map +1 -1
  61. package/dist/egress/run.js +170 -31
  62. package/dist/egress/run.js.map +1 -1
  63. package/dist/errors/errorEngine.js +15 -3
  64. package/dist/errors/errorEngine.js.map +1 -1
  65. package/dist/errors/providerErrors.js.map +1 -1
  66. package/dist/evals/evals.js +304 -78
  67. package/dist/evals/evals.js.map +1 -1
  68. package/dist/evals/index.d.ts +2 -2
  69. package/dist/evals/index.js +1 -1
  70. package/dist/evals/index.js.map +1 -1
  71. package/dist/evidence/index.d.ts +2 -2
  72. package/dist/evidence/index.js +1 -1
  73. package/dist/evidence/index.js.map +1 -1
  74. package/dist/evidence/report.d.ts +1 -1
  75. package/dist/evidence/report.js +263 -79
  76. package/dist/evidence/report.js.map +1 -1
  77. package/dist/fault/faultLab.js +24 -9
  78. package/dist/fault/faultLab.js.map +1 -1
  79. package/dist/index.d.ts +42 -42
  80. package/dist/index.js +21 -21
  81. package/dist/index.js.map +1 -1
  82. package/dist/inventory/analysis.d.ts +1 -1
  83. package/dist/inventory/analysis.js +174 -50
  84. package/dist/inventory/analysis.js.map +1 -1
  85. package/dist/inventory/index.d.ts +4 -4
  86. package/dist/inventory/index.js +3 -3
  87. package/dist/inventory/index.js.map +1 -1
  88. package/dist/inventory/inventoryController.js +362 -115
  89. package/dist/inventory/inventoryController.js.map +1 -1
  90. package/dist/inventory/types.js +680 -140
  91. package/dist/inventory/types.js.map +1 -1
  92. package/dist/ledger/actionLedger.js +355 -78
  93. package/dist/ledger/actionLedger.js.map +1 -1
  94. package/dist/ledger/index.d.ts +2 -2
  95. package/dist/ledger/index.js +1 -1
  96. package/dist/ledger/index.js.map +1 -1
  97. package/dist/mcp/server.js +26 -11
  98. package/dist/mcp/server.js.map +1 -1
  99. package/dist/policy/index.d.ts +2 -2
  100. package/dist/policy/index.js +1 -1
  101. package/dist/policy/index.js.map +1 -1
  102. package/dist/policy/policy.js +112 -32
  103. package/dist/policy/policy.js.map +1 -1
  104. package/dist/productTelemetry/index.js +71 -20
  105. package/dist/productTelemetry/index.js.map +1 -1
  106. package/dist/providers/conformance.js +10 -5
  107. package/dist/providers/conformance.js.map +1 -1
  108. package/dist/providers/discord.js +2 -2
  109. package/dist/providers/generic.js +3 -3
  110. package/dist/providers/github.js +2 -2
  111. package/dist/providers/index.d.ts +3 -3
  112. package/dist/providers/index.js +2 -2
  113. package/dist/providers/index.js.map +1 -1
  114. package/dist/providers/openai.js +3 -3
  115. package/dist/providers/packs/resendPack.js +51 -25
  116. package/dist/providers/packs/resendPack.js.map +1 -1
  117. package/dist/providers/packs/stripePack.js +590 -121
  118. package/dist/providers/packs/stripePack.js.map +1 -1
  119. package/dist/providers/registry.js +4 -4
  120. package/dist/providers/registry.js.map +1 -1
  121. package/dist/providers/runtime.js +7 -6
  122. package/dist/providers/runtime.js.map +1 -1
  123. package/dist/providers/stripeWebhook.js +39 -10
  124. package/dist/providers/stripeWebhook.js.map +1 -1
  125. package/dist/providers/twilio.js +2 -2
  126. package/dist/proxy/cacheKey.js +9 -2
  127. package/dist/proxy/cacheKey.js.map +1 -1
  128. package/dist/proxy/providerDetector.js +22 -9
  129. package/dist/proxy/providerDetector.js.map +1 -1
  130. package/dist/proxy/proxyHandler.js +57 -22
  131. package/dist/proxy/proxyHandler.js.map +1 -1
  132. package/dist/proxy/requestNormalizer.js +4 -2
  133. package/dist/proxy/requestNormalizer.js.map +1 -1
  134. package/dist/reliability/costGovernance.js +211 -49
  135. package/dist/reliability/costGovernance.js.map +1 -1
  136. package/dist/reliability/index.d.ts +8 -8
  137. package/dist/reliability/index.js +4 -4
  138. package/dist/reliability/index.js.map +1 -1
  139. package/dist/reliability/reconciliation.js +274 -65
  140. package/dist/reliability/reconciliation.js.map +1 -1
  141. package/dist/reliability/runtimeHealth.js +127 -35
  142. package/dist/reliability/runtimeHealth.js.map +1 -1
  143. package/dist/reliability/slo.js +257 -50
  144. package/dist/reliability/slo.js.map +1 -1
  145. package/dist/report/safetyReport.d.ts +6 -0
  146. package/dist/report/safetyReport.js +56 -12
  147. package/dist/report/safetyReport.js.map +1 -1
  148. package/dist/rules/aiRules.js +5 -5
  149. package/dist/rules/aiRules.js.map +1 -1
  150. package/dist/safety/index.d.ts +2 -2
  151. package/dist/safety/index.js +1 -1
  152. package/dist/safety/index.js.map +1 -1
  153. package/dist/safety/safetyController.js +675 -165
  154. package/dist/safety/safetyController.js.map +1 -1
  155. package/dist/scenarios/scenarioBundle.js +204 -71
  156. package/dist/scenarios/scenarioBundle.js.map +1 -1
  157. package/dist/scenarios/scenarioStore.js +88 -29
  158. package/dist/scenarios/scenarioStore.js.map +1 -1
  159. package/dist/security/headerSanitizer.js +52 -10
  160. package/dist/security/headerSanitizer.js.map +1 -1
  161. package/dist/security/secrets.js +10 -5
  162. package/dist/security/secrets.js.map +1 -1
  163. package/dist/server/accessControl.js +37 -10
  164. package/dist/server/accessControl.js.map +1 -1
  165. package/dist/server/createServer.js +1 -1
  166. package/dist/server/createServer.js.map +1 -1
  167. package/dist/server/eventsStore.js +15 -5
  168. package/dist/server/eventsStore.js.map +1 -1
  169. package/dist/server/routes.js +61 -19
  170. package/dist/server/routes.js.map +1 -1
  171. package/dist/server/sse.js +1 -1
  172. package/dist/server/sse.js.map +1 -1
  173. package/dist/setup/sdkDetector.js +7 -2
  174. package/dist/setup/sdkDetector.js.map +1 -1
  175. package/dist/setup/setupGenerator.js +136 -48
  176. package/dist/setup/setupGenerator.js.map +1 -1
  177. package/dist/state/stateExtractor.js +3 -1
  178. package/dist/state/stateExtractor.js.map +1 -1
  179. package/dist/state/stateResolver.js +10 -7
  180. package/dist/state/stateResolver.js.map +1 -1
  181. package/dist/state/stateStore.js +13 -4
  182. package/dist/state/stateStore.js.map +1 -1
  183. package/dist/storage/fileStore.js +12 -4
  184. package/dist/storage/fileStore.js.map +1 -1
  185. package/dist/teamControl/controlPlane.js +846 -174
  186. package/dist/teamControl/controlPlane.js.map +1 -1
  187. package/dist/teamControl/deployment.js +19 -5
  188. package/dist/teamControl/deployment.js.map +1 -1
  189. package/dist/teamControl/index.d.ts +4 -4
  190. package/dist/teamControl/index.js +2 -2
  191. package/dist/teamControl/index.js.map +1 -1
  192. package/dist/tests/testGenerator.js +15 -7
  193. package/dist/tests/testGenerator.js.map +1 -1
  194. package/dist/trust/index.d.ts +2 -2
  195. package/dist/trust/index.js +1 -1
  196. package/dist/trust/index.js.map +1 -1
  197. package/dist/trust/trustLadder.js +309 -63
  198. package/dist/trust/trustLadder.js.map +1 -1
  199. package/dist/worlds/index.d.ts +2 -2
  200. package/dist/worlds/index.js +1 -1
  201. package/dist/worlds/index.js.map +1 -1
  202. package/dist/worlds/worlds.js +364 -65
  203. package/dist/worlds/worlds.js.map +1 -1
  204. package/docs/assets/dashboard.png +0 -0
  205. package/docs/ci.md +49 -49
  206. package/docs/github-actions.md +84 -84
  207. package/docs/mcp.md +58 -52
  208. package/docs/policy.md +63 -61
  209. package/docs/providers/authoring-packs.md +180 -175
  210. package/docs/providers/stripe-core-pack.md +84 -82
  211. package/docs/releases/README.md +13 -0
  212. package/docs/security/action-gateway-threat-model.md +34 -34
  213. package/docs/security/action-ledger-incident-replay-threat-model.md +42 -42
  214. package/docs/security/approval-inbox-threat-model.md +35 -35
  215. package/docs/security/credential-broker-threat-model.md +52 -52
  216. package/docs/security/egress-threat-model.md +126 -126
  217. package/docs/security/inventory-threat-model.md +104 -104
  218. package/docs/security/kill-switch-budgets-threat-model.md +37 -37
  219. package/docs/security/reliability-threat-model.md +111 -111
  220. package/docs/security/trust-ladder-threat-model.md +33 -33
  221. package/docs/telemetry.md +14 -0
  222. package/docs/usage.md +680 -571
  223. package/examples/README.md +10 -10
  224. package/examples/agent-instructions/README.md +39 -39
  225. package/examples/ci-smoke/README.md +21 -21
  226. package/examples/ci-smoke/ghostapi.policy.yaml +22 -22
  227. package/examples/ci-smoke/package.json +9 -9
  228. package/examples/ci-smoke/production-egress.mjs +4 -2
  229. package/examples/ci-smoke/safe.mjs +21 -17
  230. package/examples/evals/README.md +24 -24
  231. package/examples/evals/retry-after.eval.json +71 -52
  232. package/examples/generic-rest/README.md +27 -27
  233. package/examples/github-fetch/README.md +38 -35
  234. package/examples/openai-streaming/README.md +16 -16
  235. package/examples/openai-streaming/streaming-tool-call.mjs +44 -31
  236. package/examples/policy/ghostapi.policy.yaml +27 -27
  237. package/examples/record-replay/README.md +19 -19
  238. package/examples/record-replay/replay-requests.json +22 -22
  239. package/examples/record-replay/stripe-checkout.har.json +30 -30
  240. package/examples/resend-node/README.md +22 -22
  241. package/examples/stripe-node/README.md +35 -35
  242. package/examples/stripe-node/checkout-flow.mjs +87 -61
  243. package/examples/twilio-node/README.md +21 -21
  244. package/examples/worlds/README.md +19 -19
  245. package/examples/worlds/subscription-recovery.mjs +21 -12
  246. package/package.json +28 -6
  247. package/dist/landing/assets/index-BXR41fAD.css +0 -1
  248. package/dist/landing/assets/index-CxWsopzP.css +0 -1
  249. package/dist/landing/assets/index-D8_ggMRE.js +0 -55
  250. package/dist/landing/assets/index-DZlpyhqd.js +0 -55
  251. package/dist/landing/assets/index-Dk-Xezs3.js +0 -55
  252. package/dist/landing/index.html +0 -15
  253. package/dist/landing/landing.d.ts +0 -3
  254. package/dist/landing/landing.js +0 -12
  255. package/dist/landing/landing.js.map +0 -1
  256. package/docs/commercial/README.md +0 -29
  257. package/docs/commercial/data-inventory.md +0 -36
  258. package/docs/commercial/manual-invoicing.md +0 -44
  259. package/docs/commercial/metrics.md +0 -51
  260. package/docs/commercial/pricing.md +0 -103
  261. package/docs/commercial/privacy-policy-draft.md +0 -41
  262. package/docs/commercial/terms-topics-for-counsel.md +0 -51
  263. package/docs/design-partners/README.md +0 -52
  264. package/docs/design-partners/demo-narratives.md +0 -33
  265. package/docs/design-partners/design-partner-offer.md +0 -39
  266. package/docs/design-partners/discovery-questions.md +0 -28
  267. package/docs/design-partners/feedback-capture-template.md +0 -48
  268. package/docs/design-partners/icp-one-pager.md +0 -43
  269. package/docs/design-partners/onboarding-checklist.md +0 -33
  270. package/docs/design-partners/pilot-success-criteria.md +0 -27
  271. package/docs/design-partners/pricing-interview-script.md +0 -18
  272. package/docs/design-partners/telemetry-plan.md +0 -48
  273. package/docs/development/baseline.md +0 -114
  274. package/docs/development/onboarding-smoke.md +0 -37
  275. package/docs/development/verification-0.1.8.md +0 -25
  276. package/docs/enterprise-product-roadmap-ru.md +0 -1879
  277. package/docs/fundraising/README.md +0 -87
  278. package/docs/fundraising/data-room-checklist.md +0 -72
  279. package/docs/fundraising/demo-script.md +0 -52
  280. package/docs/fundraising/design-partners-50.md +0 -74
  281. package/docs/fundraising/launch-posts.md +0 -37
  282. package/docs/fundraising/metrics-and-evidence.md +0 -30
  283. package/docs/fundraising/roadmap-12-month.md +0 -25
  284. package/docs/fundraising/technical-due-diligence-index.md +0 -37
  285. package/docs/fundraising/yc-application.md +0 -25
  286. package/docs/hosted-pilot.md +0 -111
  287. package/docs/operations/disaster-recovery-runbook.md +0 -81
  288. package/docs/operations/kill-switch-runbook.md +0 -32
  289. package/docs/release-checklist.md +0 -83
  290. package/docs/release-migration-and-rollback.md +0 -63
  291. package/docs/release-readiness.md +0 -39
  292. package/docs/team-control-plane.md +0 -72
@@ -3,7 +3,7 @@ import { lstat, readFile } from "node:fs/promises";
3
3
  import { dirname } from "node:path";
4
4
  import { getDataPaths } from "../config/dataPaths.js";
5
5
  import { sanitizeSecretString } from "../security/secrets.js";
6
- import { atomicWriteJson, ensurePrivateDirectory, withFileLock } from "../storage/fileStore.js";
6
+ import { atomicWriteJson, ensurePrivateDirectory, withFileLock, } from "../storage/fileStore.js";
7
7
  const SCHEMA_VERSION = 1;
8
8
  const KIND = "ghostapi.slo";
9
9
  const MAX_STORE_BYTES = 4 * 1024 * 1024;
@@ -14,8 +14,18 @@ const MAX_RECORD_BATCH = 1_000;
14
14
  const MIN_WINDOW_MS = 60 * 60 * 1000;
15
15
  const MAX_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;
16
16
  const IDENTIFIER = /^[a-z0-9][a-z0-9._-]{0,127}$/;
17
- export const SLO_METRICS = ["policy_decision", "approval_delivery", "execution_latency", "availability", "duplicate_prevention", "receipt_verification"];
18
- export const SLO_LATENCY_METRICS = ["approval_delivery", "execution_latency"];
17
+ export const SLO_METRICS = [
18
+ "policy_decision",
19
+ "approval_delivery",
20
+ "execution_latency",
21
+ "availability",
22
+ "duplicate_prevention",
23
+ "receipt_verification",
24
+ ];
25
+ export const SLO_LATENCY_METRICS = [
26
+ "approval_delivery",
27
+ "execution_latency",
28
+ ];
19
29
  export class SloError extends Error {
20
30
  constructor(message) {
21
31
  super(message);
@@ -38,7 +48,8 @@ export class LocalSloController {
38
48
  constructor(options = {}) {
39
49
  this.path = options.path ?? getDataPaths().sloStore;
40
50
  this.now = options.now ?? (() => new Date());
41
- this.operatorAuthorizer = options.operatorAuthorizer ?? createDisabledSloOperatorAuthorizer();
51
+ this.operatorAuthorizer =
52
+ options.operatorAuthorizer ?? createDisabledSloOperatorAuthorizer();
42
53
  }
43
54
  async configureTarget(input) {
44
55
  await this.authorize(input.identity, "slo.configure");
@@ -93,21 +104,36 @@ export class LocalSloController {
93
104
  async evaluate(input) {
94
105
  await this.authorize(input.identity, "slo.inspect");
95
106
  const now = this.timestamp();
96
- const runId = input.runId === undefined ? `slo-${randomUUID().replace(/-/g, "").slice(0, 32)}` : identifier(input.runId, "SLO run id");
107
+ const runId = input.runId === undefined
108
+ ? `slo-${randomUUID().replace(/-/g, "").slice(0, 32)}`
109
+ : identifier(input.runId, "SLO run id");
97
110
  const state = await this.read();
98
111
  const windowEnd = now;
99
112
  const windowStart = new Date(Date.parse(windowEnd) - MAX_WINDOW_MS).toISOString();
100
113
  const evaluations = state.targets.map((target) => evaluateTarget(target, state.samples, now));
101
- return { schemaVersion: 1, kind: "ghostapi.slo-report", generatedAt: now, runId, windowStart, windowEnd, evaluations };
114
+ return {
115
+ schemaVersion: 1,
116
+ kind: "ghostapi.slo-report",
117
+ generatedAt: now,
118
+ runId,
119
+ windowStart,
120
+ windowEnd,
121
+ evaluations,
122
+ };
102
123
  }
103
124
  async inspect(input) {
104
125
  await this.authorize(input.identity, "slo.inspect");
105
126
  const state = await this.read();
106
- const sampleCounts = Object.fromEntries(SLO_METRICS.map((metric) => [metric, state.samples.filter((sample) => sample.metric === metric).length]));
127
+ const sampleCounts = Object.fromEntries(SLO_METRICS.map((metric) => [
128
+ metric,
129
+ state.samples.filter((sample) => sample.metric === metric).length,
130
+ ]));
107
131
  return { targets: clone(state.targets), sampleCounts };
108
132
  }
109
133
  assertRecordPermission(capability) {
110
- if (capability !== null && typeof capability === "object" && sloRecordCapabilities.has(capability))
134
+ if (capability !== null &&
135
+ typeof capability === "object" &&
136
+ sloRecordCapabilities.has(capability))
111
137
  return;
112
138
  throw new SloError("SLO sample recording requires a verified record capability.");
113
139
  }
@@ -155,24 +181,83 @@ export class LocalSloController {
155
181
  }
156
182
  }
157
183
  export function createDisabledSloOperatorAuthorizer() {
158
- return { async authenticate() { throw new SloError("SLO operator authorization is not configured."); } };
184
+ return {
185
+ async authenticate() {
186
+ throw new SloError("SLO operator authorization is not configured.");
187
+ },
188
+ };
159
189
  }
160
190
  export function createTestSloOperatorAuthorizer() {
161
191
  const issued = new WeakSet();
162
192
  return {
163
- authorizer: { async authenticate(identity) { if (identity === null || typeof identity !== "object" || !issued.has(identity))
164
- throw new SloError("SLO operator identity is not authenticated."); return validateOperator(identity); } },
165
- issue(input) { const operator = Object.freeze(validateOperator(input)); issued.add(operator); return operator; }
193
+ authorizer: {
194
+ async authenticate(identity) {
195
+ if (identity === null ||
196
+ typeof identity !== "object" ||
197
+ !issued.has(identity))
198
+ throw new SloError("SLO operator identity is not authenticated.");
199
+ return validateOperator(identity);
200
+ },
201
+ },
202
+ issue(input) {
203
+ const operator = Object.freeze(validateOperator(input));
204
+ issued.add(operator);
205
+ return operator;
206
+ },
166
207
  };
167
208
  }
168
209
  export function examplePilotSloTargets() {
169
210
  return [
170
- { id: "pilot.availability", metric: "availability", windowMs: 60 * 60 * 1000, minimumSamples: 10, targetBps: 9_990, description: "Example pilot target: 99.9% of executed actions complete without a failed or ambiguous outcome." },
171
- { id: "pilot.duplicate_prevention", metric: "duplicate_prevention", windowMs: 60 * 60 * 1000, minimumSamples: 10, targetBps: 10_000, description: "Example pilot target: no action produces more than one provider receipt in the local ledger." },
172
- { id: "pilot.receipt_verification", metric: "receipt_verification", windowMs: 60 * 60 * 1000, minimumSamples: 10, targetBps: 9_950, description: "Example pilot target: committed actions carry a verified provider receipt." },
173
- { id: "pilot.execution_latency", metric: "execution_latency", windowMs: 60 * 60 * 1000, minimumSamples: 10, targetBps: 9_900, latencyMaxMs: 5_000, description: "Example pilot target: 99% of executions finish within 5 seconds." },
174
- { id: "pilot.policy_decision", metric: "policy_decision", windowMs: 60 * 60 * 1000, minimumSamples: 10, targetBps: 9_990, description: "Example pilot target: policy decisions recorded in the ledger are always admitted." },
175
- { id: "pilot.approval_delivery", metric: "approval_delivery", windowMs: 60 * 60 * 1000, minimumSamples: 10, targetBps: 9_990, latencyMaxMs: 5 * 60 * 1000, description: "Example pilot target: approval artifacts reach execution within 5 minutes." }
211
+ {
212
+ id: "pilot.availability",
213
+ metric: "availability",
214
+ windowMs: 60 * 60 * 1000,
215
+ minimumSamples: 10,
216
+ targetBps: 9_990,
217
+ description: "Example pilot target: 99.9% of executed actions complete without a failed or ambiguous outcome.",
218
+ },
219
+ {
220
+ id: "pilot.duplicate_prevention",
221
+ metric: "duplicate_prevention",
222
+ windowMs: 60 * 60 * 1000,
223
+ minimumSamples: 10,
224
+ targetBps: 10_000,
225
+ description: "Example pilot target: no action produces more than one provider receipt in the local ledger.",
226
+ },
227
+ {
228
+ id: "pilot.receipt_verification",
229
+ metric: "receipt_verification",
230
+ windowMs: 60 * 60 * 1000,
231
+ minimumSamples: 10,
232
+ targetBps: 9_950,
233
+ description: "Example pilot target: committed actions carry a verified provider receipt.",
234
+ },
235
+ {
236
+ id: "pilot.execution_latency",
237
+ metric: "execution_latency",
238
+ windowMs: 60 * 60 * 1000,
239
+ minimumSamples: 10,
240
+ targetBps: 9_900,
241
+ latencyMaxMs: 5_000,
242
+ description: "Example pilot target: 99% of executions finish within 5 seconds.",
243
+ },
244
+ {
245
+ id: "pilot.policy_decision",
246
+ metric: "policy_decision",
247
+ windowMs: 60 * 60 * 1000,
248
+ minimumSamples: 10,
249
+ targetBps: 9_990,
250
+ description: "Example pilot target: policy decisions recorded in the ledger are always admitted.",
251
+ },
252
+ {
253
+ id: "pilot.approval_delivery",
254
+ metric: "approval_delivery",
255
+ windowMs: 60 * 60 * 1000,
256
+ minimumSamples: 10,
257
+ targetBps: 9_990,
258
+ latencyMaxMs: 5 * 60 * 1000,
259
+ description: "Example pilot target: approval artifacts reach execution within 5 minutes.",
260
+ },
176
261
  ];
177
262
  }
178
263
  export function formatSloReport(report) {
@@ -180,8 +265,16 @@ export function formatSloReport(report) {
180
265
  if (report.evaluations.length === 0)
181
266
  lines.push(" (no SLO targets configured)");
182
267
  for (const evaluation of report.evaluations) {
183
- const status = evaluation.status === "met" ? "met" : evaluation.status === "breached" ? "BREACHED" : "insufficient data";
184
- const budget = evaluation.status === "met" ? ` (budget remaining ${evaluation.budgetRemainingBps} bps)` : evaluation.status === "breached" ? ` (short ${Math.abs(evaluation.budgetRemainingBps)} bps)` : "";
268
+ const status = evaluation.status === "met"
269
+ ? "met"
270
+ : evaluation.status === "breached"
271
+ ? "BREACHED"
272
+ : "insufficient data";
273
+ const budget = evaluation.status === "met"
274
+ ? ` (budget remaining ${evaluation.budgetRemainingBps} bps)`
275
+ : evaluation.status === "breached"
276
+ ? ` (short ${Math.abs(evaluation.budgetRemainingBps)} bps)`
277
+ : "";
185
278
  lines.push(` ${evaluation.metric} [${evaluation.targetId}] ${status} ok ${evaluation.okCount}/${evaluation.sampleCount} = ${evaluation.okRateBps} bps vs ${evaluation.targetBps} bps${budget}${evaluation.latencyMaxMs === undefined ? "" : ` (latency max ${evaluation.latencyMaxMs} ms)`}`);
186
279
  }
187
280
  return lines.join("\n");
@@ -201,7 +294,15 @@ function validateState(value) {
201
294
  }
202
295
  function validateTarget(value) {
203
296
  const target = object(value, "SLO target is invalid.");
204
- exactKeys(target, ["id", "metric", "windowMs", "minimumSamples", "targetBps", "latencyMaxMs", "description"], "SLO target", ["latencyMaxMs", "description"]);
297
+ exactKeys(target, [
298
+ "id",
299
+ "metric",
300
+ "windowMs",
301
+ "minimumSamples",
302
+ "targetBps",
303
+ "latencyMaxMs",
304
+ "description",
305
+ ], "SLO target", ["latencyMaxMs", "description"]);
205
306
  if (!SLO_METRICS.includes(target.metric))
206
307
  throw new SloError("SLO target metric is invalid.");
207
308
  const result = {
@@ -210,19 +311,41 @@ function validateTarget(value) {
210
311
  windowMs: boundedMs(target.windowMs, "SLO target window"),
211
312
  minimumSamples: positive(target.minimumSamples, "SLO target minimum samples", MAX_SAMPLES_PER_METRIC),
212
313
  targetBps: bps(target.targetBps, "SLO target rate"),
213
- ...(target.latencyMaxMs === undefined ? {} : { latencyMaxMs: nonNegative(target.latencyMaxMs, "SLO target latency", 24 * 60 * 60 * 1000) }),
214
- ...(target.description === undefined ? {} : { description: text(target.description, "SLO target description", 240) })
314
+ ...(target.latencyMaxMs === undefined
315
+ ? {}
316
+ : {
317
+ latencyMaxMs: nonNegative(target.latencyMaxMs, "SLO target latency", 24 * 60 * 60 * 1000),
318
+ }),
319
+ ...(target.description === undefined
320
+ ? {}
321
+ : {
322
+ description: text(target.description, "SLO target description", 240),
323
+ }),
215
324
  };
216
- if (SLO_LATENCY_METRICS.includes(result.metric) && result.latencyMaxMs === undefined)
325
+ if (SLO_LATENCY_METRICS.includes(result.metric) &&
326
+ result.latencyMaxMs === undefined)
217
327
  throw new SloError("Latency SLO targets require a latencyMaxMs bound.");
218
328
  return result;
219
329
  }
220
330
  function validateStoredSample(value) {
221
331
  const sample = object(value, "SLO sample is invalid.");
222
- exactKeys(sample, ["schemaVersion", "kind", "sampleId", "metric", "ok", "durationMs", "recordedAt", "runId", "actionId", "labels"], "SLO sample", ["durationMs", "runId", "actionId"]);
223
- if (sample.schemaVersion !== SCHEMA_VERSION || sample.kind !== "ghostapi.slo-sample")
332
+ exactKeys(sample, [
333
+ "schemaVersion",
334
+ "kind",
335
+ "sampleId",
336
+ "metric",
337
+ "ok",
338
+ "durationMs",
339
+ "recordedAt",
340
+ "runId",
341
+ "actionId",
342
+ "labels",
343
+ ], "SLO sample", ["durationMs", "runId", "actionId"]);
344
+ if (sample.schemaVersion !== SCHEMA_VERSION ||
345
+ sample.kind !== "ghostapi.slo-sample")
224
346
  throw new SloError("Unsupported SLO sample schema.");
225
- if (!SLO_METRICS.includes(sample.metric) || typeof sample.ok !== "boolean")
347
+ if (!SLO_METRICS.includes(sample.metric) ||
348
+ typeof sample.ok !== "boolean")
226
349
  throw new SloError("SLO sample metric or ok flag is invalid.");
227
350
  return {
228
351
  schemaVersion: 1,
@@ -230,11 +353,19 @@ function validateStoredSample(value) {
230
353
  sampleId: identifier(sample.sampleId, "SLO sample id"),
231
354
  metric: sample.metric,
232
355
  ok: sample.ok,
233
- ...(sample.durationMs === undefined ? {} : { durationMs: nonNegative(sample.durationMs, "SLO sample duration", 24 * 60 * 60 * 1000) }),
356
+ ...(sample.durationMs === undefined
357
+ ? {}
358
+ : {
359
+ durationMs: nonNegative(sample.durationMs, "SLO sample duration", 24 * 60 * 60 * 1000),
360
+ }),
234
361
  recordedAt: timestamp(sample.recordedAt, "SLO sample time"),
235
- ...(sample.runId === undefined ? {} : { runId: identifier(sample.runId, "SLO sample run id") }),
236
- ...(sample.actionId === undefined ? {} : { actionId: identifier(sample.actionId, "SLO sample action id") }),
237
- labels: validateLabels(sample.labels)
362
+ ...(sample.runId === undefined
363
+ ? {}
364
+ : { runId: identifier(sample.runId, "SLO sample run id") }),
365
+ ...(sample.actionId === undefined
366
+ ? {}
367
+ : { actionId: identifier(sample.actionId, "SLO sample action id") }),
368
+ labels: validateLabels(sample.labels),
238
369
  };
239
370
  }
240
371
  function validateSample(input, now) {
@@ -248,19 +379,41 @@ function validateSample(input, now) {
248
379
  sampleId: `sample-${randomUUID().replace(/-/g, "").slice(0, 32)}`,
249
380
  metric: input.metric,
250
381
  ok: input.ok,
251
- ...(input.durationMs === undefined ? {} : { durationMs: nonNegative(input.durationMs, "SLO sample duration", 24 * 60 * 60 * 1000) }),
382
+ ...(input.durationMs === undefined
383
+ ? {}
384
+ : {
385
+ durationMs: nonNegative(input.durationMs, "SLO sample duration", 24 * 60 * 60 * 1000),
386
+ }),
252
387
  recordedAt: now,
253
- ...(input.runId === undefined ? {} : { runId: identifier(input.runId, "SLO sample run id") }),
254
- ...(input.actionId === undefined ? {} : { actionId: identifier(input.actionId, "SLO sample action id") }),
255
- labels: input.labels === undefined ? {} : validateLabels(input.labels)
388
+ ...(input.runId === undefined
389
+ ? {}
390
+ : { runId: identifier(input.runId, "SLO sample run id") }),
391
+ ...(input.actionId === undefined
392
+ ? {}
393
+ : { actionId: identifier(input.actionId, "SLO sample action id") }),
394
+ labels: input.labels === undefined ? {} : validateLabels(input.labels),
256
395
  };
257
396
  return result;
258
397
  }
259
398
  function validateLabels(value) {
260
399
  const labels = object(value ?? {}, "SLO sample labels are invalid.");
261
- exactKeys(labels, ["tenantId", "agentId", "projectId", "provider", "actionClass", "workflowId"], "SLO sample labels");
400
+ exactKeys(labels, [
401
+ "tenantId",
402
+ "agentId",
403
+ "projectId",
404
+ "provider",
405
+ "actionClass",
406
+ "workflowId",
407
+ ], "SLO sample labels");
262
408
  const result = {};
263
- for (const key of ["tenantId", "agentId", "projectId", "provider", "actionClass", "workflowId"]) {
409
+ for (const key of [
410
+ "tenantId",
411
+ "agentId",
412
+ "projectId",
413
+ "provider",
414
+ "actionClass",
415
+ "workflowId",
416
+ ]) {
264
417
  if (labels[key] !== undefined)
265
418
  result[key] = identifier(labels[key], `SLO label ${key}`);
266
419
  }
@@ -268,14 +421,31 @@ function validateLabels(value) {
268
421
  }
269
422
  function evaluateTarget(target, samples, now) {
270
423
  const windowStart = Date.parse(now) - target.windowMs;
271
- const inWindow = samples.filter((sample) => sample.metric === target.metric && Date.parse(sample.recordedAt) >= windowStart && Date.parse(sample.recordedAt) <= Date.parse(now) + 1_000);
424
+ const inWindow = samples.filter((sample) => sample.metric === target.metric &&
425
+ Date.parse(sample.recordedAt) >= windowStart &&
426
+ Date.parse(sample.recordedAt) <= Date.parse(now) + 1_000);
272
427
  if (inWindow.length < target.minimumSamples) {
273
- return { targetId: target.id, metric: target.metric, targetBps: target.targetBps, status: "insufficient_data", windowMs: target.windowMs, sampleCount: inWindow.length, okCount: 0, okRateBps: 0, budgetRemainingBps: 0, ...(target.latencyMaxMs === undefined ? {} : { latencyMaxMs: target.latencyMaxMs }) };
428
+ return {
429
+ targetId: target.id,
430
+ metric: target.metric,
431
+ targetBps: target.targetBps,
432
+ status: "insufficient_data",
433
+ windowMs: target.windowMs,
434
+ sampleCount: inWindow.length,
435
+ okCount: 0,
436
+ okRateBps: 0,
437
+ budgetRemainingBps: 0,
438
+ ...(target.latencyMaxMs === undefined
439
+ ? {}
440
+ : { latencyMaxMs: target.latencyMaxMs }),
441
+ };
274
442
  }
275
443
  let okCount = 0;
276
444
  for (const sample of inWindow) {
277
445
  if (SLO_LATENCY_METRICS.includes(sample.metric)) {
278
- if (sample.ok && sample.durationMs !== undefined && sample.durationMs <= target.latencyMaxMs)
446
+ if (sample.ok &&
447
+ sample.durationMs !== undefined &&
448
+ sample.durationMs <= target.latencyMaxMs)
279
449
  okCount += 1;
280
450
  }
281
451
  else if (sample.ok) {
@@ -284,7 +454,20 @@ function evaluateTarget(target, samples, now) {
284
454
  }
285
455
  const okRateBps = rateBps(okCount, inWindow.length);
286
456
  const status = okRateBps >= target.targetBps ? "met" : "breached";
287
- return { targetId: target.id, metric: target.metric, targetBps: target.targetBps, status, windowMs: target.windowMs, sampleCount: inWindow.length, okCount, okRateBps, budgetRemainingBps: okRateBps - target.targetBps, ...(target.latencyMaxMs === undefined ? {} : { latencyMaxMs: target.latencyMaxMs }) };
457
+ return {
458
+ targetId: target.id,
459
+ metric: target.metric,
460
+ targetBps: target.targetBps,
461
+ status,
462
+ windowMs: target.windowMs,
463
+ sampleCount: inWindow.length,
464
+ okCount,
465
+ okRateBps,
466
+ budgetRemainingBps: okRateBps - target.targetBps,
467
+ ...(target.latencyMaxMs === undefined
468
+ ? {}
469
+ : { latencyMaxMs: target.latencyMaxMs }),
470
+ };
288
471
  }
289
472
  function trimSamples(state, boundary) {
290
473
  const boundaryMs = Date.parse(boundary);
@@ -292,7 +475,9 @@ function trimSamples(state, boundary) {
292
475
  for (const metric of SLO_METRICS) {
293
476
  const metricSamples = state.samples.filter((sample) => sample.metric === metric);
294
477
  if (metricSamples.length > MAX_SAMPLES_PER_METRIC) {
295
- const ids = new Set(metricSamples.slice(0, metricSamples.length - MAX_SAMPLES_PER_METRIC).map((sample) => sample.sampleId));
478
+ const ids = new Set(metricSamples
479
+ .slice(0, metricSamples.length - MAX_SAMPLES_PER_METRIC)
480
+ .map((sample) => sample.sampleId));
296
481
  state.samples = state.samples.filter((sample) => sample.metric !== metric || !ids.has(sample.sampleId));
297
482
  }
298
483
  }
@@ -309,20 +494,33 @@ function validateOperator(value) {
309
494
  return permission;
310
495
  });
311
496
  unique(permissions, "SLO operator permissions");
312
- return { id: identifier(operator.id, "SLO operator id"), principalId: identifier(operator.principalId, "SLO operator principal id"), permissions };
497
+ return {
498
+ id: identifier(operator.id, "SLO operator id"),
499
+ principalId: identifier(operator.principalId, "SLO operator principal id"),
500
+ permissions,
501
+ };
313
502
  }
314
503
  function boundedMs(value, label) {
315
- if (typeof value !== "number" || !Number.isInteger(value) || value < MIN_WINDOW_MS || value > MAX_WINDOW_MS)
504
+ if (typeof value !== "number" ||
505
+ !Number.isInteger(value) ||
506
+ value < MIN_WINDOW_MS ||
507
+ value > MAX_WINDOW_MS)
316
508
  throw new SloError(`${label} must be between one hour and 30 days.`);
317
509
  return value;
318
510
  }
319
511
  function positive(value, label, max) {
320
- if (typeof value !== "number" || !Number.isInteger(value) || value < 1 || value > max)
512
+ if (typeof value !== "number" ||
513
+ !Number.isInteger(value) ||
514
+ value < 1 ||
515
+ value > max)
321
516
  throw new SloError(`${label} is invalid.`);
322
517
  return value;
323
518
  }
324
519
  function nonNegative(value, label, max) {
325
- if (typeof value !== "number" || !Number.isInteger(value) || value < 0 || value > max)
520
+ if (typeof value !== "number" ||
521
+ !Number.isInteger(value) ||
522
+ value < 0 ||
523
+ value > max)
326
524
  throw new SloError(`${label} is invalid.`);
327
525
  return value;
328
526
  }
@@ -333,17 +531,25 @@ function rateBps(count, total) {
333
531
  return total === 0 ? 0 : Math.floor((count * 10_000) / total);
334
532
  }
335
533
  function identifier(value, label) {
336
- if (typeof value !== "string" || !IDENTIFIER.test(value) || sanitizeSecretString(value) !== value)
534
+ if (typeof value !== "string" ||
535
+ !IDENTIFIER.test(value) ||
536
+ sanitizeSecretString(value) !== value)
337
537
  throw new SloError(`${label} must be a safe identifier.`);
338
538
  return value;
339
539
  }
340
540
  function timestamp(value, label) {
341
- if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value) || !Number.isFinite(Date.parse(value)))
541
+ if (typeof value !== "string" ||
542
+ !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value) ||
543
+ !Number.isFinite(Date.parse(value)))
342
544
  throw new SloError(`${label} must be an ISO UTC timestamp.`);
343
545
  return value;
344
546
  }
345
547
  function text(value, label, max) {
346
- if (typeof value !== "string" || value.trim() === "" || value.length > max || /[\u0000-\u001f]/.test(value) || sanitizeSecretString(value) !== value)
548
+ if (typeof value !== "string" ||
549
+ value.trim() === "" ||
550
+ value.length > max ||
551
+ /[\u0000-\u001f]/.test(value) ||
552
+ sanitizeSecretString(value) !== value)
347
553
  throw new SloError(`${label} is invalid.`);
348
554
  return value.trim();
349
555
  }
@@ -359,7 +565,8 @@ function array(value, label, max) {
359
565
  }
360
566
  function exactKeys(value, keys, label, optional = []) {
361
567
  for (const key of Object.keys(value))
362
- if (!keys.includes(key) || (value[key] === undefined && !optional.includes(key)))
568
+ if (!keys.includes(key) ||
569
+ (value[key] === undefined && !optional.includes(key)))
363
570
  throw new SloError(`${label} contains unsupported field: ${key}`);
364
571
  }
365
572
  function unique(values, label) {
@@ -1 +1 @@
1
- {"version":3,"file":"slo.js","sourceRoot":"","sources":["../../src/reliability/slo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slo.js","sourceRoot":"","sources":["../../src/reliability/slo.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,11 @@ export type SafetyReport = {
9
9
  detected: DetectedSdk[];
10
10
  findings: SafetyFinding[];
11
11
  recommendations: string[];
12
+ limits: {
13
+ scannedFiles: number;
14
+ maxFiles: number;
15
+ maxFileBytes: number;
16
+ extensions: string[];
17
+ };
12
18
  };
13
19
  export declare function generateSafetyReport(projectRoot?: string): Promise<SafetyReport>;