@probemap/shared 0.1.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.
- package/dist/api/collector.d.ts +535 -0
- package/dist/api/collector.d.ts.map +1 -0
- package/dist/api/collector.js +234 -0
- package/dist/api/collector.js.map +1 -0
- package/dist/api/live.d.ts +245 -0
- package/dist/api/live.d.ts.map +1 -0
- package/dist/api/live.js +32 -0
- package/dist/api/live.js.map +1 -0
- package/dist/change-debug/api.d.ts +215 -0
- package/dist/change-debug/api.d.ts.map +1 -0
- package/dist/change-debug/api.js +32 -0
- package/dist/change-debug/api.js.map +1 -0
- package/dist/change-debug/artifact.d.ts +49 -0
- package/dist/change-debug/artifact.d.ts.map +1 -0
- package/dist/change-debug/artifact.js +11 -0
- package/dist/change-debug/artifact.js.map +1 -0
- package/dist/change-debug/capture.d.ts +413 -0
- package/dist/change-debug/capture.d.ts.map +1 -0
- package/dist/change-debug/capture.js +92 -0
- package/dist/change-debug/capture.js.map +1 -0
- package/dist/change-debug/common.d.ts +23 -0
- package/dist/change-debug/common.d.ts.map +1 -0
- package/dist/change-debug/common.js +34 -0
- package/dist/change-debug/common.js.map +1 -0
- package/dist/change-debug/execution.d.ts +163 -0
- package/dist/change-debug/execution.d.ts.map +1 -0
- package/dist/change-debug/execution.js +56 -0
- package/dist/change-debug/execution.js.map +1 -0
- package/dist/change-debug/experiment.d.ts +482 -0
- package/dist/change-debug/experiment.d.ts.map +1 -0
- package/dist/change-debug/experiment.js +71 -0
- package/dist/change-debug/experiment.js.map +1 -0
- package/dist/change-debug/runner.d.ts +187 -0
- package/dist/change-debug/runner.d.ts.map +1 -0
- package/dist/change-debug/runner.js +77 -0
- package/dist/change-debug/runner.js.map +1 -0
- package/dist/contracts/flow-contract.d.ts +91 -0
- package/dist/contracts/flow-contract.d.ts.map +1 -0
- package/dist/contracts/flow-contract.js +121 -0
- package/dist/contracts/flow-contract.js.map +1 -0
- package/dist/diagnosis/claim.d.ts +28 -0
- package/dist/diagnosis/claim.d.ts.map +1 -0
- package/dist/diagnosis/claim.js +29 -0
- package/dist/diagnosis/claim.js.map +1 -0
- package/dist/diagnosis/engine.d.ts +22 -0
- package/dist/diagnosis/engine.d.ts.map +1 -0
- package/dist/diagnosis/engine.js +179 -0
- package/dist/diagnosis/engine.js.map +1 -0
- package/dist/diagnosis/reproduction-capsule.d.ts +35 -0
- package/dist/diagnosis/reproduction-capsule.d.ts.map +1 -0
- package/dist/diagnosis/reproduction-capsule.js +42 -0
- package/dist/diagnosis/reproduction-capsule.js.map +1 -0
- package/dist/diagnosis/result.d.ts +126 -0
- package/dist/diagnosis/result.d.ts.map +1 -0
- package/dist/diagnosis/result.js +31 -0
- package/dist/diagnosis/result.js.map +1 -0
- package/dist/diagnosis/verification.d.ts +35 -0
- package/dist/diagnosis/verification.d.ts.map +1 -0
- package/dist/diagnosis/verification.js +87 -0
- package/dist/diagnosis/verification.js.map +1 -0
- package/dist/evaluators/builtins.d.ts +20 -0
- package/dist/evaluators/builtins.d.ts.map +1 -0
- package/dist/evaluators/builtins.js +152 -0
- package/dist/evaluators/builtins.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/integration/conformance.d.ts +84 -0
- package/dist/integration/conformance.d.ts.map +1 -0
- package/dist/integration/conformance.js +25 -0
- package/dist/integration/conformance.js.map +1 -0
- package/dist/integration/profile.d.ts +1294 -0
- package/dist/integration/profile.d.ts.map +1 -0
- package/dist/integration/profile.js +246 -0
- package/dist/integration/profile.js.map +1 -0
- package/dist/onboarding/auth.d.ts +67 -0
- package/dist/onboarding/auth.d.ts.map +1 -0
- package/dist/onboarding/auth.js +52 -0
- package/dist/onboarding/auth.js.map +1 -0
- package/dist/onboarding/contracts.d.ts +535 -0
- package/dist/onboarding/contracts.d.ts.map +1 -0
- package/dist/onboarding/contracts.js +234 -0
- package/dist/onboarding/contracts.js.map +1 -0
- package/dist/onboarding/failure.d.ts +102 -0
- package/dist/onboarding/failure.d.ts.map +1 -0
- package/dist/onboarding/failure.js +57 -0
- package/dist/onboarding/failure.js.map +1 -0
- package/dist/onboarding/index.d.ts +5 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +5 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/state-machine.d.ts +5 -0
- package/dist/onboarding/state-machine.d.ts.map +1 -0
- package/dist/onboarding/state-machine.js +27 -0
- package/dist/onboarding/state-machine.js.map +1 -0
- package/dist/protocol/causal-edge.d.ts +30 -0
- package/dist/protocol/causal-edge.d.ts.map +1 -0
- package/dist/protocol/causal-edge.js +21 -0
- package/dist/protocol/causal-edge.js.map +1 -0
- package/dist/protocol/event-batch.d.ts +102 -0
- package/dist/protocol/event-batch.d.ts.map +1 -0
- package/dist/protocol/event-batch.js +45 -0
- package/dist/protocol/event-batch.js.map +1 -0
- package/dist/protocol/event.d.ts +253 -0
- package/dist/protocol/event.d.ts.map +1 -0
- package/dist/protocol/event.js +93 -0
- package/dist/protocol/event.js.map +1 -0
- package/dist/protocol/file-hint.d.ts +24 -0
- package/dist/protocol/file-hint.d.ts.map +1 -0
- package/dist/protocol/file-hint.js +17 -0
- package/dist/protocol/file-hint.js.map +1 -0
- package/dist/protocol/trace-context.d.ts +21 -0
- package/dist/protocol/trace-context.d.ts.map +1 -0
- package/dist/protocol/trace-context.js +59 -0
- package/dist/protocol/trace-context.js.map +1 -0
- package/dist/protocol/version.d.ts +11 -0
- package/dist/protocol/version.d.ts.map +1 -0
- package/dist/protocol/version.js +28 -0
- package/dist/protocol/version.js.map +1 -0
- package/dist/security/auth.d.ts +120 -0
- package/dist/security/auth.d.ts.map +1 -0
- package/dist/security/auth.js +80 -0
- package/dist/security/auth.js.map +1 -0
- package/dist/serialization/safe-snapshot.d.ts +2 -0
- package/dist/serialization/safe-snapshot.d.ts.map +1 -0
- package/dist/serialization/safe-snapshot.js +67 -0
- package/dist/serialization/safe-snapshot.js.map +1 -0
- package/package.json +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/integration/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { experimentExecutionModeSchema, sourceAccessModeSchema } from "../change-debug/runner.js";
|
|
3
|
+
import { sha256Schema } from "../change-debug/common.js";
|
|
4
|
+
export const HOST_INTEGRATION_STANDARD = "PM-HIS-1";
|
|
5
|
+
export const INTEGRATION_PROFILE_SCHEMA_VERSION = 1;
|
|
6
|
+
export const CHANGE_DEBUG_INTEGRATION_PROFILE_SCHEMA_VERSION = 2;
|
|
7
|
+
export const hostRuntimeSchema = z.enum(["browser", "node", "worker", "cli", "custom"]);
|
|
8
|
+
export const conformanceLevelSchema = z.enum(["L0", "L1", "L2", "L3", "L4"]);
|
|
9
|
+
export const conformanceLevelNameSchema = z.enum(["connected", "observable", "diagnosable", "verifiable", "replayable"]);
|
|
10
|
+
export const ciIntegrationModeSchema = z.enum(["advisory", "contract_gate", "replay_gate"]);
|
|
11
|
+
const profileKeySchema = z.string().min(3).max(128).regex(/^[a-z0-9]+(?:[._-][a-z0-9]+)+$/u, "Profile keys must be stable lowercase dotted identifiers.");
|
|
12
|
+
const relativePortablePathSchema = z.string().min(1).max(1_024).superRefine((value, context) => {
|
|
13
|
+
if (/^(?:[A-Za-z]:[\\/]|[/\\])/u.test(value) || value.split(/[\\/]/u).includes("..")) {
|
|
14
|
+
context.addIssue({ code: "custom", message: "Path must be portable, relative, and remain inside the host repository." });
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const boundedStringArray = z.array(z.string().min(1).max(256)).max(256);
|
|
18
|
+
export const capabilitySetSchema = z.strictObject({
|
|
19
|
+
autoCapture: z.array(z.enum(["actions", "network", "errors", "console", "navigation"])).max(5).default([]),
|
|
20
|
+
semanticFlows: z.boolean(),
|
|
21
|
+
tracePropagation: z.boolean(),
|
|
22
|
+
sourceMaps: z.boolean(),
|
|
23
|
+
visualArtifacts: z.boolean(),
|
|
24
|
+
reproductionCapsule: z.boolean(),
|
|
25
|
+
manualVerification: z.boolean(),
|
|
26
|
+
automatedReplay: z.boolean(),
|
|
27
|
+
});
|
|
28
|
+
export const capabilityManifestV1Schema = z.strictObject({
|
|
29
|
+
standard: z.literal(HOST_INTEGRATION_STANDARD),
|
|
30
|
+
schemaVersion: z.literal(INTEGRATION_PROFILE_SCHEMA_VERSION),
|
|
31
|
+
profileKey: profileKeySchema,
|
|
32
|
+
profileVersion: z.number().int().positive(),
|
|
33
|
+
runtimes: z.array(hostRuntimeSchema).min(1).max(5),
|
|
34
|
+
frameworks: boundedStringArray,
|
|
35
|
+
capabilities: capabilitySetSchema,
|
|
36
|
+
});
|
|
37
|
+
export const reviewedCommandSchema = z.strictObject({
|
|
38
|
+
command: z.string().min(1).max(256).regex(/^[A-Za-z0-9@._/\\:-]+$/u, "Commands must use an executable name, not a shell fragment."),
|
|
39
|
+
args: z.array(z.string().max(1_024)).max(128).default([]),
|
|
40
|
+
cwd: relativePortablePathSchema.default("."),
|
|
41
|
+
timeoutMs: z.number().int().min(1_000).max(30 * 60_000).default(120_000),
|
|
42
|
+
});
|
|
43
|
+
export const experimentNetworkPolicySchema = z.strictObject({
|
|
44
|
+
id: z.string().min(1).max(256),
|
|
45
|
+
mode: z.enum(["none", "loopback", "allowlist"]),
|
|
46
|
+
allowedHosts: z.array(z.string().min(1).max(512)).max(128).default([]),
|
|
47
|
+
allowedPorts: z.array(z.number().int().min(1).max(65_535)).max(128).default([]),
|
|
48
|
+
dnsAllowed: z.boolean().default(false),
|
|
49
|
+
});
|
|
50
|
+
export const registeredVerificationCommandSchema = reviewedCommandSchema.extend({
|
|
51
|
+
id: z.string().min(1).max(256).regex(/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u),
|
|
52
|
+
label: z.string().min(1).max(256),
|
|
53
|
+
phase: z.enum(["dependency", "build", "typecheck", "test", "replay"]),
|
|
54
|
+
environmentAllowlist: z.array(z.string().regex(/^[A-Z][A-Z0-9_]*$/u)).max(128).default([]),
|
|
55
|
+
networkPolicyId: z.string().min(1).max(256),
|
|
56
|
+
expectedExitCodes: z.array(z.number().int().min(0).max(255)).min(1).max(16).default([0]),
|
|
57
|
+
commandHash: sha256Schema,
|
|
58
|
+
installScripts: z.boolean().default(false),
|
|
59
|
+
});
|
|
60
|
+
export const replayAdapterDefinitionSchema = z.strictObject({
|
|
61
|
+
id: z.string().min(1).max(256),
|
|
62
|
+
version: z.number().int().positive(),
|
|
63
|
+
commandId: z.string().min(1).max(256),
|
|
64
|
+
flowContractVersionId: z.uuid(),
|
|
65
|
+
fixtureId: z.string().min(1).max(256),
|
|
66
|
+
readinessProbe: z.strictObject({ type: z.enum(["http", "tcp", "process"]), target: z.string().min(1).max(1_024), timeoutMs: z.number().int().min(1_000).max(300_000) }).optional(),
|
|
67
|
+
maxDurationMs: z.number().int().min(1_000).max(4 * 60 * 60_000),
|
|
68
|
+
requiredEnvironmentKeys: z.array(z.string().regex(/^[A-Z][A-Z0-9_]*$/u)).max(128).default([]),
|
|
69
|
+
});
|
|
70
|
+
export const changeDebugCapabilitiesSchema = z.strictObject({
|
|
71
|
+
changeCapture: z.enum(["none", "manual", "agent_lifecycle", "git_watcher"]),
|
|
72
|
+
sourceAccess: sourceAccessModeSchema,
|
|
73
|
+
experimentExecution: experimentExecutionModeSchema,
|
|
74
|
+
symbolAnalysis: z.array(z.enum(["typescript", "javascript"])).max(2).default([]),
|
|
75
|
+
containerIsolation: z.boolean(),
|
|
76
|
+
networkIsolation: z.boolean(),
|
|
77
|
+
maxParallelSandboxes: z.number().int().min(1).max(16),
|
|
78
|
+
});
|
|
79
|
+
export const changeDebugProfileExtensionSchema = z.strictObject({
|
|
80
|
+
capabilities: changeDebugCapabilitiesSchema,
|
|
81
|
+
commands: z.array(registeredVerificationCommandSchema).max(128).default([]),
|
|
82
|
+
networkPolicies: z.array(experimentNetworkPolicySchema).max(64).default([]),
|
|
83
|
+
replayAdapters: z.array(replayAdapterDefinitionSchema).max(64).default([]),
|
|
84
|
+
sourceDenyPaths: boundedStringArray.default([]),
|
|
85
|
+
allowedUntrackedPaths: boundedStringArray.default([]),
|
|
86
|
+
artifactRetentionDays: z.number().int().min(1).max(3_650).default(30),
|
|
87
|
+
});
|
|
88
|
+
export const capabilityManifestV2Schema = z.strictObject({
|
|
89
|
+
standard: z.literal(HOST_INTEGRATION_STANDARD),
|
|
90
|
+
schemaVersion: z.literal(CHANGE_DEBUG_INTEGRATION_PROFILE_SCHEMA_VERSION),
|
|
91
|
+
profileKey: profileKeySchema,
|
|
92
|
+
profileVersion: z.number().int().positive(),
|
|
93
|
+
runtimes: z.array(hostRuntimeSchema).min(1).max(5),
|
|
94
|
+
frameworks: boundedStringArray,
|
|
95
|
+
capabilities: capabilitySetSchema,
|
|
96
|
+
changeDebug: changeDebugCapabilitiesSchema,
|
|
97
|
+
});
|
|
98
|
+
export const capabilityManifestSchema = z.discriminatedUnion("schemaVersion", [capabilityManifestV1Schema, capabilityManifestV2Schema]);
|
|
99
|
+
export const profileContractSchema = z.strictObject({
|
|
100
|
+
stableKey: z.string().min(3).max(256).regex(/^[a-z0-9]+(?:[._-][a-z0-9]+)+$/u),
|
|
101
|
+
version: z.number().int().positive(),
|
|
102
|
+
passFixture: relativePortablePathSchema,
|
|
103
|
+
failureFixture: relativePortablePathSchema,
|
|
104
|
+
knownCoverageGaps: boundedStringArray.default([]),
|
|
105
|
+
});
|
|
106
|
+
export const profilePayloadSchema = z.strictObject({
|
|
107
|
+
id: z.string().min(3).max(256).regex(/^[a-z0-9]+(?:[._-][a-z0-9]+)+$/u),
|
|
108
|
+
version: z.number().int().positive(),
|
|
109
|
+
schemaFile: relativePortablePathSchema,
|
|
110
|
+
maxBytes: z.number().int().min(1).max(65_536).default(8_192),
|
|
111
|
+
});
|
|
112
|
+
const integrationProfileBaseSchema = z.strictObject({
|
|
113
|
+
standard: z.literal(HOST_INTEGRATION_STANDARD),
|
|
114
|
+
status: z.enum(["draft", "active"]),
|
|
115
|
+
profile: z.strictObject({ key: profileKeySchema, version: z.number().int().positive() }),
|
|
116
|
+
project: z.strictObject({ root: relativePortablePathSchema.default(".") }),
|
|
117
|
+
runtimes: z.array(hostRuntimeSchema).min(1).max(5),
|
|
118
|
+
frameworks: boundedStringArray,
|
|
119
|
+
capabilities: capabilitySetSchema,
|
|
120
|
+
connection: z.strictObject({
|
|
121
|
+
mode: z.enum(["localhost", "remote"]),
|
|
122
|
+
collectorUrl: z.url().optional(),
|
|
123
|
+
authentication: z.enum(["none", "api_key", "browser_token", "server_proxy"]),
|
|
124
|
+
allowedOrigins: z.array(z.url()).max(64).default([]),
|
|
125
|
+
requireHttps: z.boolean(),
|
|
126
|
+
}).default({ mode: "localhost", authentication: "none", allowedOrigins: [], requireHttps: false }),
|
|
127
|
+
distribution: z.strictObject({
|
|
128
|
+
method: z.enum(["registry", "tarball", "workspace"]),
|
|
129
|
+
packages: z.record(z.string().min(1), z.string().min(1).max(256)),
|
|
130
|
+
integrity: z.string().regex(/^sha256-[A-Za-z0-9+/=]+$/u).optional(),
|
|
131
|
+
}),
|
|
132
|
+
discovery: z.strictObject({
|
|
133
|
+
exclude: boundedStringArray.default([".next*", "dist", "build", "coverage", "vendor", "generated"]),
|
|
134
|
+
useGitignore: z.boolean().default(true),
|
|
135
|
+
maxFiles: z.number().int().min(1).max(25_000).default(5_000),
|
|
136
|
+
maxFileBytes: z.number().int().min(1_024).max(2_000_000).default(512_000),
|
|
137
|
+
}),
|
|
138
|
+
privacy: z.strictObject({
|
|
139
|
+
defaultLevel: z.enum(["safe", "redacted", "sensitive"]).default("safe"),
|
|
140
|
+
allowedPayloadKeys: boundedStringArray.default([]),
|
|
141
|
+
deniedPayloadKeys: boundedStringArray.min(1),
|
|
142
|
+
maxEventPayloadBytes: z.number().int().min(256).max(65_536).default(8_192),
|
|
143
|
+
}),
|
|
144
|
+
performance: z.strictObject({
|
|
145
|
+
maxSynchronousEnqueueP95Ms: z.number().positive().max(10).default(1),
|
|
146
|
+
maxEventsPerFlow: z.number().int().min(1).max(10_000).default(50),
|
|
147
|
+
highFrequencySampleMs: z.number().int().min(16).max(10_000).default(100),
|
|
148
|
+
}),
|
|
149
|
+
verification: z.strictObject({
|
|
150
|
+
build: z.array(reviewedCommandSchema).max(20).default([]),
|
|
151
|
+
typecheck: z.array(reviewedCommandSchema).max(20).default([]),
|
|
152
|
+
tests: z.array(reviewedCommandSchema).max(50).default([]),
|
|
153
|
+
}),
|
|
154
|
+
contracts: z.array(profileContractSchema).max(200).default([]),
|
|
155
|
+
payloadSchemas: z.array(profilePayloadSchema).max(200).default([]),
|
|
156
|
+
hostSafetyTests: boundedStringArray.default([]),
|
|
157
|
+
rollout: z.strictObject({ level: conformanceLevelSchema, ciMode: ciIntegrationModeSchema.default("advisory") }),
|
|
158
|
+
rollback: z.strictObject({ disableEnvironmentVariable: z.string().min(1).max(128).regex(/^[A-Z][A-Z0-9_]+$/u), steps: boundedStringArray.min(1) }),
|
|
159
|
+
limitations: boundedStringArray.default([]),
|
|
160
|
+
});
|
|
161
|
+
function validateIntegrationProfile(profile, context) {
|
|
162
|
+
if (profile.capabilities.automatedReplay && profile.rollout.level !== "L4") {
|
|
163
|
+
context.addIssue({ code: "custom", path: ["capabilities", "automatedReplay"], message: "Automated replay may only be declared at L4." });
|
|
164
|
+
}
|
|
165
|
+
if (profile.rollout.ciMode === "replay_gate" && profile.rollout.level !== "L4") {
|
|
166
|
+
context.addIssue({ code: "custom", path: ["rollout", "ciMode"], message: "Replay gate requires L4 evidence." });
|
|
167
|
+
}
|
|
168
|
+
if (profile.status === "active") {
|
|
169
|
+
if (profile.contracts.length === 0)
|
|
170
|
+
context.addIssue({ code: "custom", path: ["contracts"], message: "An active profile requires at least one reviewed Flow Contract fixture pair." });
|
|
171
|
+
if (profile.hostSafetyTests.length === 0)
|
|
172
|
+
context.addIssue({ code: "custom", path: ["hostSafetyTests"], message: "An active profile requires host-safety tests." });
|
|
173
|
+
}
|
|
174
|
+
if (profile.distribution.method === "workspace" && profile.limitations.every((item) => !item.toLowerCase().includes("monorepo"))) {
|
|
175
|
+
context.addIssue({ code: "custom", path: ["distribution", "method"], message: "Workspace distribution requires an explicit monorepo limitation/justification." });
|
|
176
|
+
}
|
|
177
|
+
if (profile.connection.mode === "remote") {
|
|
178
|
+
if (profile.connection.authentication === "none")
|
|
179
|
+
context.addIssue({ code: "custom", path: ["connection", "authentication"], message: "Remote integration requires an authenticated transport." });
|
|
180
|
+
if (!profile.connection.requireHttps)
|
|
181
|
+
context.addIssue({ code: "custom", path: ["connection", "requireHttps"], message: "Remote integration requires HTTPS." });
|
|
182
|
+
if (profile.connection.collectorUrl === undefined || !profile.connection.collectorUrl.startsWith("https://"))
|
|
183
|
+
context.addIssue({ code: "custom", path: ["connection", "collectorUrl"], message: "Remote integration requires an HTTPS Collector URL." });
|
|
184
|
+
if (profile.runtimes.includes("browser") && profile.connection.authentication === "api_key")
|
|
185
|
+
context.addIssue({ code: "custom", path: ["connection", "authentication"], message: "Long-lived API keys must not be embedded in a browser runtime; use browser_token or server_proxy." });
|
|
186
|
+
if (profile.runtimes.includes("browser") && profile.connection.authentication === "browser_token" && profile.connection.allowedOrigins.length === 0)
|
|
187
|
+
context.addIssue({ code: "custom", path: ["connection", "allowedOrigins"], message: "Direct browser token transport requires at least one exact trusted origin." });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
export const integrationProfileV1Schema = integrationProfileBaseSchema.extend({
|
|
191
|
+
schemaVersion: z.literal(INTEGRATION_PROFILE_SCHEMA_VERSION),
|
|
192
|
+
}).superRefine(validateIntegrationProfile);
|
|
193
|
+
export const integrationProfileV2Schema = integrationProfileBaseSchema.extend({
|
|
194
|
+
schemaVersion: z.literal(CHANGE_DEBUG_INTEGRATION_PROFILE_SCHEMA_VERSION),
|
|
195
|
+
extensions: z.strictObject({ changeDebug: changeDebugProfileExtensionSchema }),
|
|
196
|
+
}).superRefine((profile, context) => {
|
|
197
|
+
validateIntegrationProfile(profile, context);
|
|
198
|
+
const changeDebug = profile.extensions.changeDebug;
|
|
199
|
+
const policyIds = new Set(changeDebug.networkPolicies.map((policy) => policy.id));
|
|
200
|
+
const commandIds = new Set(changeDebug.commands.map((command) => command.id));
|
|
201
|
+
if (policyIds.size !== changeDebug.networkPolicies.length)
|
|
202
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "networkPolicies"], message: "Network policy IDs must be unique." });
|
|
203
|
+
if (commandIds.size !== changeDebug.commands.length)
|
|
204
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "commands"], message: "Command IDs must be unique." });
|
|
205
|
+
for (const [index, command] of changeDebug.commands.entries())
|
|
206
|
+
if (!policyIds.has(command.networkPolicyId))
|
|
207
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "commands", index, "networkPolicyId"], message: "Command references an unknown network policy." });
|
|
208
|
+
for (const [index, adapter] of changeDebug.replayAdapters.entries())
|
|
209
|
+
if (!commandIds.has(adapter.commandId))
|
|
210
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "replayAdapters", index, "commandId"], message: "Replay adapter references an unknown command." });
|
|
211
|
+
if (changeDebug.capabilities.changeCapture !== "none" && changeDebug.capabilities.sourceAccess === "none")
|
|
212
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "capabilities", "sourceAccess"], message: "Change capture requires source access." });
|
|
213
|
+
if (changeDebug.capabilities.experimentExecution !== "disabled" && changeDebug.capabilities.sourceAccess === "none")
|
|
214
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "capabilities", "experimentExecution"], message: "Experiment execution requires source access." });
|
|
215
|
+
if (changeDebug.capabilities.experimentExecution !== "disabled" && changeDebug.commands.length === 0)
|
|
216
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "commands"], message: "Experiment execution requires at least one registered command." });
|
|
217
|
+
if (changeDebug.capabilities.sourceAccess === "server_clone" && changeDebug.capabilities.experimentExecution !== "isolated_worker")
|
|
218
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "capabilities", "experimentExecution"], message: "Server-cloned source may execute only in an isolated worker." });
|
|
219
|
+
if (profile.capabilities.automatedReplay && changeDebug.replayAdapters.length === 0)
|
|
220
|
+
context.addIssue({ code: "custom", path: ["extensions", "changeDebug", "replayAdapters"], message: "Automated replay requires a registered replay adapter." });
|
|
221
|
+
});
|
|
222
|
+
export const integrationProfileSchema = z.discriminatedUnion("schemaVersion", [integrationProfileV1Schema, integrationProfileV2Schema]);
|
|
223
|
+
export const integrationIdentitySchema = z.strictObject({
|
|
224
|
+
standard: z.literal(HOST_INTEGRATION_STANDARD),
|
|
225
|
+
schemaVersion: z.union([z.literal(INTEGRATION_PROFILE_SCHEMA_VERSION), z.literal(CHANGE_DEBUG_INTEGRATION_PROFILE_SCHEMA_VERSION)]),
|
|
226
|
+
profileKey: profileKeySchema,
|
|
227
|
+
profileVersion: z.number().int().positive(),
|
|
228
|
+
profileHash: z.string().regex(/^[a-f0-9]{64}$/u),
|
|
229
|
+
});
|
|
230
|
+
export const integrationRegistrationSchema = z.strictObject({
|
|
231
|
+
identity: integrationIdentitySchema,
|
|
232
|
+
manifest: capabilityManifestSchema,
|
|
233
|
+
}).superRefine((registration, context) => {
|
|
234
|
+
if (registration.identity.profileKey !== registration.manifest.profileKey || registration.identity.profileVersion !== registration.manifest.profileVersion || registration.identity.schemaVersion !== registration.manifest.schemaVersion) {
|
|
235
|
+
context.addIssue({ code: "custom", message: "Integration identity and capability manifest must describe the same exact profile version." });
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
export const changeDebugConfigRegistrationSchema = z.strictObject({
|
|
239
|
+
identity: integrationIdentitySchema.extend({ schemaVersion: z.literal(CHANGE_DEBUG_INTEGRATION_PROFILE_SCHEMA_VERSION) }),
|
|
240
|
+
changeDebug: changeDebugProfileExtensionSchema,
|
|
241
|
+
}).superRefine((registration, context) => {
|
|
242
|
+
const commandIds = registration.changeDebug.commands.map((command) => command.id);
|
|
243
|
+
if (new Set(commandIds).size !== commandIds.length)
|
|
244
|
+
context.addIssue({ code: "custom", path: ["changeDebug", "commands"], message: "Registered command IDs must be unique." });
|
|
245
|
+
});
|
|
246
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/integration/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const oauthDeviceAuthorizationRequestSchema: z.ZodObject<{
|
|
3
|
+
client_id: z.ZodLiteral<"probemap-cli">;
|
|
4
|
+
scope: z.ZodString;
|
|
5
|
+
dpop_jkt: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strict>;
|
|
7
|
+
export declare const oauthDeviceAuthorizationResponseSchema: z.ZodObject<{
|
|
8
|
+
device_code: z.ZodString;
|
|
9
|
+
user_code: z.ZodString;
|
|
10
|
+
verification_uri: z.ZodURL;
|
|
11
|
+
verification_uri_complete: z.ZodURL;
|
|
12
|
+
expires_in: z.ZodNumber;
|
|
13
|
+
interval: z.ZodNumber;
|
|
14
|
+
}, z.core.$strict>;
|
|
15
|
+
export declare const oauthTokenRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
16
|
+
grant_type: z.ZodLiteral<"urn:ietf:params:oauth:grant-type:device_code">;
|
|
17
|
+
device_code: z.ZodString;
|
|
18
|
+
client_id: z.ZodLiteral<"probemap-cli">;
|
|
19
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
20
|
+
grant_type: z.ZodLiteral<"refresh_token">;
|
|
21
|
+
refresh_token: z.ZodString;
|
|
22
|
+
client_id: z.ZodEnum<{
|
|
23
|
+
"probemap-cli": "probemap-cli";
|
|
24
|
+
"probemap-runner": "probemap-runner";
|
|
25
|
+
}>;
|
|
26
|
+
}, z.core.$strict>], "grant_type">;
|
|
27
|
+
export declare const oauthTokenResponseSchema: z.ZodObject<{
|
|
28
|
+
access_token: z.ZodString;
|
|
29
|
+
token_type: z.ZodLiteral<"DPoP">;
|
|
30
|
+
expires_in: z.ZodNumber;
|
|
31
|
+
refresh_token: z.ZodString;
|
|
32
|
+
scope: z.ZodString;
|
|
33
|
+
}, z.core.$strict>;
|
|
34
|
+
export declare const oauthDeviceApprovalSchema: z.ZodObject<{
|
|
35
|
+
userCode: z.ZodString;
|
|
36
|
+
subjectId: z.ZodString;
|
|
37
|
+
tenantId: z.ZodUUID;
|
|
38
|
+
approve: z.ZodBoolean;
|
|
39
|
+
}, z.core.$strict>;
|
|
40
|
+
export declare const oauthRevocationRequestSchema: z.ZodObject<{
|
|
41
|
+
token: z.ZodString;
|
|
42
|
+
token_type_hint: z.ZodOptional<z.ZodLiteral<"refresh_token">>;
|
|
43
|
+
client_id: z.ZodLiteral<"probemap-cli">;
|
|
44
|
+
}, z.core.$strict>;
|
|
45
|
+
export declare const runnerBootstrapExchangeSchema: z.ZodObject<{
|
|
46
|
+
bootstrapSecret: z.ZodString;
|
|
47
|
+
runnerInstallationId: z.ZodString;
|
|
48
|
+
publicJwk: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
49
|
+
profileHash: z.ZodString;
|
|
50
|
+
protocolVersion: z.ZodLiteral<1>;
|
|
51
|
+
version: z.ZodString;
|
|
52
|
+
operatingSystem: z.ZodString;
|
|
53
|
+
architecture: z.ZodString;
|
|
54
|
+
}, z.core.$strict>;
|
|
55
|
+
export declare const ciOperatorExchangeSchema: z.ZodObject<{
|
|
56
|
+
cli: z.ZodObject<{
|
|
57
|
+
version: z.ZodString;
|
|
58
|
+
platform: z.ZodString;
|
|
59
|
+
arch: z.ZodString;
|
|
60
|
+
}, z.core.$strict>;
|
|
61
|
+
dpopPublicJwk: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
62
|
+
encryptionPublicJwk: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
63
|
+
}, z.core.$strict>;
|
|
64
|
+
export type OAuthDeviceAuthorizationRequest = z.infer<typeof oauthDeviceAuthorizationRequestSchema>;
|
|
65
|
+
export type OAuthTokenRequest = z.infer<typeof oauthTokenRequestSchema>;
|
|
66
|
+
export type OAuthDeviceApproval = z.infer<typeof oauthDeviceApprovalSchema>;
|
|
67
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/onboarding/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qCAAqC;;;;kBAIhD,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;kBAOjD,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;kCAGlC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;kBAMnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;kBAKpC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;kBAIvC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;kBASxC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;kBAInC,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const oauthDeviceAuthorizationRequestSchema = z.strictObject({
|
|
3
|
+
client_id: z.literal("probemap-cli"),
|
|
4
|
+
scope: z.string().min(1).max(1_024),
|
|
5
|
+
dpop_jkt: z.string().min(32).max(256).optional(),
|
|
6
|
+
});
|
|
7
|
+
export const oauthDeviceAuthorizationResponseSchema = z.strictObject({
|
|
8
|
+
device_code: z.string().min(32).max(512),
|
|
9
|
+
user_code: z.string().min(6).max(32),
|
|
10
|
+
verification_uri: z.url(),
|
|
11
|
+
verification_uri_complete: z.url(),
|
|
12
|
+
expires_in: z.number().int().min(60).max(1_800),
|
|
13
|
+
interval: z.number().int().min(1).max(60),
|
|
14
|
+
});
|
|
15
|
+
export const oauthTokenRequestSchema = z.discriminatedUnion("grant_type", [
|
|
16
|
+
z.strictObject({ grant_type: z.literal("urn:ietf:params:oauth:grant-type:device_code"), device_code: z.string().min(32).max(512), client_id: z.literal("probemap-cli") }),
|
|
17
|
+
z.strictObject({ grant_type: z.literal("refresh_token"), refresh_token: z.string().min(32).max(512), client_id: z.enum(["probemap-cli", "probemap-runner"]) }),
|
|
18
|
+
]);
|
|
19
|
+
export const oauthTokenResponseSchema = z.strictObject({
|
|
20
|
+
access_token: z.string().min(32),
|
|
21
|
+
token_type: z.literal("DPoP"),
|
|
22
|
+
expires_in: z.number().int().positive().max(900),
|
|
23
|
+
refresh_token: z.string().min(32),
|
|
24
|
+
scope: z.string(),
|
|
25
|
+
});
|
|
26
|
+
export const oauthDeviceApprovalSchema = z.strictObject({
|
|
27
|
+
userCode: z.string().min(6).max(32),
|
|
28
|
+
subjectId: z.string().min(1).max(256),
|
|
29
|
+
tenantId: z.uuid(),
|
|
30
|
+
approve: z.boolean(),
|
|
31
|
+
});
|
|
32
|
+
export const oauthRevocationRequestSchema = z.strictObject({
|
|
33
|
+
token: z.string().min(32).max(512),
|
|
34
|
+
token_type_hint: z.literal("refresh_token").optional(),
|
|
35
|
+
client_id: z.literal("probemap-cli"),
|
|
36
|
+
});
|
|
37
|
+
export const runnerBootstrapExchangeSchema = z.strictObject({
|
|
38
|
+
bootstrapSecret: z.string().min(32).max(512),
|
|
39
|
+
runnerInstallationId: z.string().min(16).max(256),
|
|
40
|
+
publicJwk: z.record(z.string(), z.unknown()),
|
|
41
|
+
profileHash: z.string().regex(/^[a-f0-9]{64}$/u),
|
|
42
|
+
protocolVersion: z.literal(1),
|
|
43
|
+
version: z.string().min(1).max(64),
|
|
44
|
+
operatingSystem: z.string().min(1).max(64),
|
|
45
|
+
architecture: z.string().min(1).max(64),
|
|
46
|
+
});
|
|
47
|
+
export const ciOperatorExchangeSchema = z.strictObject({
|
|
48
|
+
cli: z.strictObject({ version: z.string().min(1).max(64), platform: z.string().min(1).max(64), arch: z.string().min(1).max(64) }),
|
|
49
|
+
dpopPublicJwk: z.record(z.string(), z.unknown()),
|
|
50
|
+
encryptionPublicJwk: z.record(z.string(), z.unknown()),
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/onboarding/auth.ts"],"names":[],"mappings":"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"}
|