@irogane/kaji 0.2.0-beta.11
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/LICENSE +105 -0
- package/README.md +598 -0
- package/contracts/README.md +14 -0
- package/contracts/beta-core-v1.json +52 -0
- package/contracts/cli/init-cases-v1.json +27 -0
- package/contracts/errors/error-codes.json +48 -0
- package/contracts/errors/integration-recovery-v1.json +127 -0
- package/contracts/errors/provider-normalization.json +111 -0
- package/contracts/events/conformance-invalid.json +20 -0
- package/contracts/events/conformance.json +511 -0
- package/contracts/events/new-kaji-event-v1.schema.json +1021 -0
- package/contracts/events/stored-kaji-event-v1.schema.json +1025 -0
- package/contracts/feature-tiers-v1.json +488 -0
- package/contracts/integrations/abi-index-v1.json +8 -0
- package/contracts/integrations/conformance-invalid.json +443 -0
- package/contracts/integrations/conformance-valid.json +121 -0
- package/contracts/integrations/copy-provenance-v1.schema.json +61 -0
- package/contracts/integrations/echo-tool-abi-v1.json +37 -0
- package/contracts/integrations/github-api-conformance-v1.json +644 -0
- package/contracts/integrations/github-tool-abi-typescript-v1.json +369 -0
- package/contracts/integrations/github-tool-abi-v1.json +146 -0
- package/contracts/integrations/gmail-api-conformance-v1.json +750 -0
- package/contracts/integrations/gmail-tool-abi-v1.json +62 -0
- package/contracts/integrations/index.schema.json +37 -0
- package/contracts/integrations/manifest.schema.json +119 -0
- package/contracts/parity/expected-normalized.json +4906 -0
- package/contracts/parity/scenarios.json +100 -0
- package/contracts/parity/scenarios.schema.json +214 -0
- package/contracts/providers/cost-conformance.json +112 -0
- package/contracts/release/github-proof-v1.schema.json +138 -0
- package/contracts/release/gmail-proof-v1.schema.json +138 -0
- package/contracts/release/kaji-ts-consumer-handoff-v1.schema.json +1289 -0
- package/contracts/release/publisher-identity-receipt-v1.schema.json +319 -0
- package/contracts/release/typescript-onboarding-evidence-v1.schema.json +740 -0
- package/contracts/tools/conformance-invalid.json +271 -0
- package/contracts/tools/conformance-valid.json +78 -0
- package/contracts/tools/tool-schema-v1.schema.json +18 -0
- package/dist/anthropic.cjs +1231 -0
- package/dist/anthropic.cjs.map +1 -0
- package/dist/anthropic.d.cts +26 -0
- package/dist/anthropic.d.ts +26 -0
- package/dist/anthropic.js +270 -0
- package/dist/anthropic.js.map +1 -0
- package/dist/auth.cjs +1507 -0
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.d.cts +129 -0
- package/dist/auth.d.ts +129 -0
- package/dist/auth.js +1039 -0
- package/dist/auth.js.map +1 -0
- package/dist/base-B9FRMcP8.d.cts +140 -0
- package/dist/base-nHQd1VtS.d.ts +140 -0
- package/dist/chunk-AAM33KAO.js +4367 -0
- package/dist/chunk-AAM33KAO.js.map +1 -0
- package/dist/chunk-KAJ6BM64.js +153 -0
- package/dist/chunk-KAJ6BM64.js.map +1 -0
- package/dist/chunk-KCAXIOZS.js +308 -0
- package/dist/chunk-KCAXIOZS.js.map +1 -0
- package/dist/chunk-LSJ4AVO2.js +243 -0
- package/dist/chunk-LSJ4AVO2.js.map +1 -0
- package/dist/chunk-TM7ZGOJX.js +716 -0
- package/dist/chunk-TM7ZGOJX.js.map +1 -0
- package/dist/cli/bin.d.ts +2 -0
- package/dist/cli/bin.js +13 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/chunk-2RCWPRVY.js +6277 -0
- package/dist/cli/chunk-2RCWPRVY.js.map +1 -0
- package/dist/cli/chunk-SEBX54TR.js +681 -0
- package/dist/cli/chunk-SEBX54TR.js.map +1 -0
- package/dist/cli/index.d.ts +232 -0
- package/dist/cli/index.js +11 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-worker.d.ts +2 -0
- package/dist/cli/init-worker.js +18 -0
- package/dist/cli/init-worker.js.map +1 -0
- package/dist/cli/integration-copy-worker.js +48 -0
- package/dist/cli/integration-copy-worker.js.map +1 -0
- package/dist/cli/package-entry-cjs.cjs +21 -0
- package/dist/cli/package-entry-cjs.cjs.map +1 -0
- package/dist/cli/package-entry-cjs.d.cts +2 -0
- package/dist/cli/package-entry.d.ts +2 -0
- package/dist/cli/package-entry.js +13 -0
- package/dist/cli/package-entry.js.map +1 -0
- package/dist/context-BaFHrQHv.d.cts +21 -0
- package/dist/context-BaFHrQHv.d.ts +21 -0
- package/dist/context-C-YPY-GS.d.cts +1538 -0
- package/dist/context-C-YPY-GS.d.ts +1538 -0
- package/dist/index.cjs +12346 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1560 -0
- package/dist/index.d.ts +1560 -0
- package/dist/index.js +7852 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/github.cjs +2092 -0
- package/dist/integrations/github.cjs.map +1 -0
- package/dist/integrations/github.d.cts +21 -0
- package/dist/integrations/github.d.ts +21 -0
- package/dist/integrations/github.js +2088 -0
- package/dist/integrations/github.js.map +1 -0
- package/dist/integrations.cjs +3370 -0
- package/dist/integrations.cjs.map +1 -0
- package/dist/integrations.d.cts +202 -0
- package/dist/integrations.d.ts +202 -0
- package/dist/integrations.js +2650 -0
- package/dist/integrations.js.map +1 -0
- package/dist/observability-Cj--OkME.d.cts +96 -0
- package/dist/observability-Cj--OkME.d.ts +96 -0
- package/dist/openai.cjs +1235 -0
- package/dist/openai.cjs.map +1 -0
- package/dist/openai.d.cts +32 -0
- package/dist/openai.d.ts +32 -0
- package/dist/openai.js +272 -0
- package/dist/openai.js.map +1 -0
- package/dist/testing.cjs +554 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +43 -0
- package/dist/testing.d.ts +43 -0
- package/dist/testing.js +118 -0
- package/dist/testing.js.map +1 -0
- package/package.json +188 -0
- package/registry/echo/index.ts +53 -0
- package/registry/echo/manifest.json +53 -0
- package/registry/github/LICENSE +105 -0
- package/registry/github/client.ts +1727 -0
- package/registry/github/index.ts +263 -0
- package/registry/github/manifest.json +227 -0
- package/registry/github/owner-fixtures.json +10 -0
- package/registry/github/tests/github.test.ts +32 -0
- package/registry/gmail/LICENSE +105 -0
- package/registry/gmail/client.ts +548 -0
- package/registry/gmail/index.ts +165 -0
- package/registry/gmail/manifest.json +102 -0
- package/registry/gmail/owner-fixtures.json +10 -0
- package/registry/gmail/tests/gmail.test.ts +32 -0
- package/registry/index.json +21 -0
- package/registry/index.schema.json +37 -0
- package/registry/schema.json +119 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
// src/contracts/integration-recovery.ts
|
|
2
|
+
var DOCS = "https://kaji.dev/docs/integrations/recovery-v1";
|
|
3
|
+
function recovery(errorCode, recoveryCode, anchor, problem, cause, fix) {
|
|
4
|
+
return Object.freeze({
|
|
5
|
+
errorCode,
|
|
6
|
+
recoveryCode,
|
|
7
|
+
docUrl: `${DOCS}#${anchor}`,
|
|
8
|
+
problem,
|
|
9
|
+
cause,
|
|
10
|
+
fix
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
var INTEGRATION_RECOVERY = Object.freeze({
|
|
14
|
+
github_token_missing: recovery(
|
|
15
|
+
"INTEGRATION_AUTH_REQUIRED",
|
|
16
|
+
"CONFIGURE_GITHUB_TOKEN",
|
|
17
|
+
"github-token",
|
|
18
|
+
"GitHub authentication is required.",
|
|
19
|
+
"The configured GitHub token is unavailable.",
|
|
20
|
+
"Set the manifest-declared GitHub token environment variable and retry."
|
|
21
|
+
),
|
|
22
|
+
gmail_grant_missing: recovery(
|
|
23
|
+
"INTEGRATION_AUTH_REQUIRED",
|
|
24
|
+
"CONNECT_GMAIL",
|
|
25
|
+
"gmail-grant",
|
|
26
|
+
"Gmail authorization is required.",
|
|
27
|
+
"No Gmail grant exists for this principal.",
|
|
28
|
+
"Use the package-qualified connect command for this runtime and principal, then retry."
|
|
29
|
+
),
|
|
30
|
+
keychain_missing: recovery(
|
|
31
|
+
"INTEGRATION_AUTH_ERROR",
|
|
32
|
+
"RESTORE_KEYCHAIN",
|
|
33
|
+
"keychain-missing",
|
|
34
|
+
"The macOS Keychain is unavailable.",
|
|
35
|
+
"The Keychain command could not be found.",
|
|
36
|
+
"Restore `/usr/bin/security` on a supported macOS host and retry."
|
|
37
|
+
),
|
|
38
|
+
keychain_locked: recovery(
|
|
39
|
+
"INTEGRATION_AUTH_ERROR",
|
|
40
|
+
"UNLOCK_KEYCHAIN",
|
|
41
|
+
"keychain-locked",
|
|
42
|
+
"The macOS Keychain is locked.",
|
|
43
|
+
"The stored integration grant cannot be read while Keychain is locked.",
|
|
44
|
+
"Unlock the login Keychain and retry."
|
|
45
|
+
),
|
|
46
|
+
keychain_corrupt: recovery(
|
|
47
|
+
"INTEGRATION_AUTH_ERROR",
|
|
48
|
+
"RESET_GMAIL_GRANT",
|
|
49
|
+
"keychain-corrupt",
|
|
50
|
+
"The stored Gmail grant is invalid.",
|
|
51
|
+
"The Keychain entry is corrupt or incomplete.",
|
|
52
|
+
"Disconnect Gmail locally, then reconnect with the same principal."
|
|
53
|
+
),
|
|
54
|
+
keychain_unsupported: recovery(
|
|
55
|
+
"INTEGRATION_AUTH_ERROR",
|
|
56
|
+
"USE_SUPPORTED_KEYCHAIN",
|
|
57
|
+
"keychain-unsupported",
|
|
58
|
+
"Secure Gmail grant storage is unsupported.",
|
|
59
|
+
"This host cannot provide the required macOS Keychain boundary.",
|
|
60
|
+
"Use a supported macOS host; do not fall back to plaintext storage."
|
|
61
|
+
),
|
|
62
|
+
gmail_scope_drift: recovery(
|
|
63
|
+
"INTEGRATION_AUTH_REQUIRED",
|
|
64
|
+
"RECONNECT_GMAIL",
|
|
65
|
+
"gmail-scope-drift",
|
|
66
|
+
"The Gmail grant no longer has the required scopes.",
|
|
67
|
+
"Stored and required OAuth scopes differ.",
|
|
68
|
+
"Use the package-qualified connect command for this runtime and principal, then consent again."
|
|
69
|
+
),
|
|
70
|
+
policy_rejected: recovery(
|
|
71
|
+
"INTEGRATION_POLICY_REJECTED",
|
|
72
|
+
"REVIEW_INTEGRATION_POLICY",
|
|
73
|
+
"policy-rejected",
|
|
74
|
+
"The integration request was rejected before dispatch.",
|
|
75
|
+
"A fixed-origin, repository, recipient, or schema policy did not match.",
|
|
76
|
+
"Review the integration allowlist and request shape before retrying."
|
|
77
|
+
),
|
|
78
|
+
api_rejected: recovery(
|
|
79
|
+
"INTEGRATION_API_ERROR",
|
|
80
|
+
"REVIEW_PROVIDER_REJECTION",
|
|
81
|
+
"api-rejected",
|
|
82
|
+
"The provider rejected the integration request.",
|
|
83
|
+
"The provider returned a confirmed non-retryable API rejection.",
|
|
84
|
+
"Review the request against the provider response guidance before retrying manually."
|
|
85
|
+
),
|
|
86
|
+
transient_read_failed: recovery(
|
|
87
|
+
"INTEGRATION_API_ERROR",
|
|
88
|
+
"RETRY_INTEGRATION_READ",
|
|
89
|
+
"transient-read",
|
|
90
|
+
"The integration read did not complete.",
|
|
91
|
+
"The provider returned a transient failure before any external effect.",
|
|
92
|
+
"Retry the idempotent read with bounded backoff."
|
|
93
|
+
),
|
|
94
|
+
rate_limited: recovery(
|
|
95
|
+
"INTEGRATION_RATE_LIMITED",
|
|
96
|
+
"RETRY_AFTER_RATE_LIMIT",
|
|
97
|
+
"rate-limited",
|
|
98
|
+
"The provider rate limit was reached.",
|
|
99
|
+
"The provider confirmed that this request was rate limited.",
|
|
100
|
+
"Reduce parallelism and retry only after the bounded provider delay."
|
|
101
|
+
),
|
|
102
|
+
redirect_rejected: recovery(
|
|
103
|
+
"INTEGRATION_REDIRECT_REJECTED",
|
|
104
|
+
"REJECT_PROVIDER_REDIRECT",
|
|
105
|
+
"redirect-rejected",
|
|
106
|
+
"The provider returned a redirect that Kaji will not follow.",
|
|
107
|
+
"Fixed-origin integration requests reject every redirect.",
|
|
108
|
+
"Verify the provider endpoint; do not retry an ambiguous mutation blindly."
|
|
109
|
+
),
|
|
110
|
+
response_limit_exceeded: recovery(
|
|
111
|
+
"INTEGRATION_RESPONSE_LIMIT",
|
|
112
|
+
"REDUCE_INTEGRATION_RESPONSE",
|
|
113
|
+
"response-limit",
|
|
114
|
+
"The integration response exceeded a safety bound.",
|
|
115
|
+
"Provider headers or body were malformed or too large.",
|
|
116
|
+
"Narrow the read request; reconcile a mutation before any retry."
|
|
117
|
+
),
|
|
118
|
+
github_mutation_unknown: recovery(
|
|
119
|
+
"TOOL_EXECUTION_FAILED",
|
|
120
|
+
"RECONCILE_GITHUB_MUTATION",
|
|
121
|
+
"github-mutation-unknown",
|
|
122
|
+
"The GitHub mutation outcome is unknown.",
|
|
123
|
+
"The connection failed after dispatch without a confirmed provider result.",
|
|
124
|
+
"Reconcile the GitHub issue or comment marker before any manual retry."
|
|
125
|
+
),
|
|
126
|
+
gmail_mutation_unknown: recovery(
|
|
127
|
+
"TOOL_EXECUTION_FAILED",
|
|
128
|
+
"RECONCILE_GMAIL_MUTATION",
|
|
129
|
+
"gmail-mutation-unknown",
|
|
130
|
+
"The Gmail mutation outcome is unknown.",
|
|
131
|
+
"The connection failed after dispatch without a confirmed provider result.",
|
|
132
|
+
"Reconcile the Gmail draft key or sent message before any manual retry."
|
|
133
|
+
)
|
|
134
|
+
});
|
|
135
|
+
function recoveryForReason(reasonCode) {
|
|
136
|
+
const value = INTEGRATION_RECOVERY[reasonCode];
|
|
137
|
+
if (value === void 0) throw new TypeError("unknown integration recovery reason");
|
|
138
|
+
return value;
|
|
139
|
+
}
|
|
140
|
+
function closedRecoveryFields(value) {
|
|
141
|
+
if (typeof value !== "object" || value === null) return void 0;
|
|
142
|
+
const candidate = value;
|
|
143
|
+
if (typeof candidate.reason_code !== "string" || typeof candidate.recovery_code !== "string" || typeof candidate.doc_url !== "string") {
|
|
144
|
+
return void 0;
|
|
145
|
+
}
|
|
146
|
+
const recovery2 = INTEGRATION_RECOVERY[candidate.reason_code];
|
|
147
|
+
if (recovery2 === void 0 || recovery2.recoveryCode !== candidate.recovery_code || recovery2.docUrl !== candidate.doc_url || "error_code" in candidate && recovery2.errorCode !== candidate.error_code) {
|
|
148
|
+
return void 0;
|
|
149
|
+
}
|
|
150
|
+
return Object.freeze({
|
|
151
|
+
reason_code: candidate.reason_code,
|
|
152
|
+
recovery_code: candidate.recovery_code,
|
|
153
|
+
doc_url: candidate.doc_url
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function isClosedRecoveryTuple(reasonCode, recoveryCode, docUrl, errorCode) {
|
|
157
|
+
if (reasonCode === void 0 && recoveryCode === void 0 && docUrl === void 0) return true;
|
|
158
|
+
return closedRecoveryFields({
|
|
159
|
+
error_code: errorCode,
|
|
160
|
+
reason_code: reasonCode,
|
|
161
|
+
recovery_code: recoveryCode,
|
|
162
|
+
doc_url: docUrl
|
|
163
|
+
}) !== void 0;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// src/tools/execution-errors.ts
|
|
167
|
+
var TOOL_EXECUTION_ERROR_BRAND = /* @__PURE__ */ Symbol.for("@kaji/sdk.ToolExecutionError.v1");
|
|
168
|
+
function nativeInstanceOf(constructor, value) {
|
|
169
|
+
return Function.prototype[Symbol.hasInstance].call(constructor, value);
|
|
170
|
+
}
|
|
171
|
+
var ToolExecutionError = class _ToolExecutionError extends Error {
|
|
172
|
+
constructor(message, error_code, retryable, outcome, recovery2) {
|
|
173
|
+
super(message);
|
|
174
|
+
this.error_code = error_code;
|
|
175
|
+
this.retryable = retryable;
|
|
176
|
+
this.outcome = outcome;
|
|
177
|
+
this.name = "ToolExecutionError";
|
|
178
|
+
Object.defineProperty(this, TOOL_EXECUTION_ERROR_BRAND, { value: true });
|
|
179
|
+
if (recovery2 !== void 0) {
|
|
180
|
+
this.reason_code = recovery2.reason_code;
|
|
181
|
+
this.recovery_code = recovery2.recovery_code;
|
|
182
|
+
this.doc_url = recovery2.doc_url;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
error_code;
|
|
186
|
+
retryable;
|
|
187
|
+
outcome;
|
|
188
|
+
static [Symbol.hasInstance](value) {
|
|
189
|
+
if (this !== _ToolExecutionError) return nativeInstanceOf(this, value);
|
|
190
|
+
return nativeInstanceOf(this, value) || value instanceof Error && Reflect.get(value, TOOL_EXECUTION_ERROR_BRAND) === true;
|
|
191
|
+
}
|
|
192
|
+
reason_code;
|
|
193
|
+
recovery_code;
|
|
194
|
+
doc_url;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/integrations/errors.ts
|
|
198
|
+
function certified(kind, reasonCode, retryable) {
|
|
199
|
+
return Object.freeze({ kind, recovery: recoveryForReason(reasonCode), retryable });
|
|
200
|
+
}
|
|
201
|
+
var CERTIFIED_FAILURES = Object.freeze({
|
|
202
|
+
api_rejected: certified("api", "api_rejected", false),
|
|
203
|
+
github_token_missing: certified("auth_required", "github_token_missing", false),
|
|
204
|
+
gmail_grant_missing: certified("auth_required", "gmail_grant_missing", false),
|
|
205
|
+
gmail_scope_drift: certified("auth_required", "gmail_scope_drift", false),
|
|
206
|
+
keychain_missing: certified("auth", "keychain_missing", false),
|
|
207
|
+
keychain_locked: certified("auth", "keychain_locked", false),
|
|
208
|
+
keychain_corrupt: certified("auth", "keychain_corrupt", false),
|
|
209
|
+
keychain_unsupported: certified("auth", "keychain_unsupported", false),
|
|
210
|
+
rate_limited: certified("rate_limited", "rate_limited", true),
|
|
211
|
+
transient_read_failed: certified("transient_read", "transient_read_failed", true),
|
|
212
|
+
policy_rejected: certified("policy", "policy_rejected", false)
|
|
213
|
+
});
|
|
214
|
+
function certifiedFailure(reasonCode) {
|
|
215
|
+
const failure = CERTIFIED_FAILURES[reasonCode];
|
|
216
|
+
if (failure === void 0) throw new TypeError("uncertified integration failure reason");
|
|
217
|
+
return failure;
|
|
218
|
+
}
|
|
219
|
+
function constructorKind(constructor) {
|
|
220
|
+
if (constructor === IntegrationExecutionError) return "api";
|
|
221
|
+
if (constructor === IntegrationAuthRequiredError) return "auth_required";
|
|
222
|
+
if (constructor === IntegrationAuthError) return "auth";
|
|
223
|
+
if (constructor === IntegrationRateLimitedError) return "rate_limited";
|
|
224
|
+
if (constructor === IntegrationTransientReadError) return "transient_read";
|
|
225
|
+
if (constructor === IntegrationPolicyError) return "policy";
|
|
226
|
+
return void 0;
|
|
227
|
+
}
|
|
228
|
+
var IntegrationExecutionError = class extends ToolExecutionError {
|
|
229
|
+
constructor(reasonCode) {
|
|
230
|
+
const failure = certifiedFailure(reasonCode);
|
|
231
|
+
if (failure.kind !== constructorKind(new.target)) {
|
|
232
|
+
throw new TypeError("integration failure reason is not certified for this error class");
|
|
233
|
+
}
|
|
234
|
+
const { recovery: recovery2 } = failure;
|
|
235
|
+
super("Tool execution failed", recovery2.errorCode, failure.retryable, "failed", {
|
|
236
|
+
reason_code: reasonCode,
|
|
237
|
+
recovery_code: recovery2.recoveryCode,
|
|
238
|
+
doc_url: recovery2.docUrl
|
|
239
|
+
});
|
|
240
|
+
this.name = "IntegrationExecutionError";
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
var IntegrationAuthRequiredError = class extends IntegrationExecutionError {
|
|
244
|
+
constructor(reasonCode) {
|
|
245
|
+
super(reasonCode);
|
|
246
|
+
this.name = "IntegrationAuthRequiredError";
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
var IntegrationAuthError = class extends IntegrationExecutionError {
|
|
250
|
+
constructor(reasonCode) {
|
|
251
|
+
super(reasonCode);
|
|
252
|
+
this.name = "IntegrationAuthError";
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
var IntegrationRateLimitedError = class extends IntegrationExecutionError {
|
|
256
|
+
constructor() {
|
|
257
|
+
super("rate_limited");
|
|
258
|
+
this.name = "IntegrationRateLimitedError";
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
var IntegrationTransientReadError = class extends IntegrationExecutionError {
|
|
262
|
+
constructor() {
|
|
263
|
+
super("transient_read_failed");
|
|
264
|
+
this.name = "IntegrationTransientReadError";
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
var IntegrationPolicyError = class extends IntegrationExecutionError {
|
|
268
|
+
constructor() {
|
|
269
|
+
super("policy_rejected");
|
|
270
|
+
this.name = "IntegrationPolicyError";
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
var IntegrationTransportError = class extends Error {
|
|
274
|
+
constructor(error_code, reasonCode) {
|
|
275
|
+
super("Integration transport failed");
|
|
276
|
+
this.error_code = error_code;
|
|
277
|
+
this.name = "IntegrationTransportError";
|
|
278
|
+
if (reasonCode !== void 0) {
|
|
279
|
+
const recovery2 = recoveryForReason(reasonCode);
|
|
280
|
+
if (recovery2.errorCode !== error_code) {
|
|
281
|
+
throw new TypeError("integration recovery reason does not match error code");
|
|
282
|
+
}
|
|
283
|
+
this.reason_code = reasonCode;
|
|
284
|
+
this.recovery_code = recovery2.recoveryCode;
|
|
285
|
+
this.doc_url = recovery2.docUrl;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
error_code;
|
|
289
|
+
reason_code;
|
|
290
|
+
recovery_code;
|
|
291
|
+
doc_url;
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
// src/internal/uuid.ts
|
|
295
|
+
function defaultUuid() {
|
|
296
|
+
const c = globalThis.crypto;
|
|
297
|
+
if (c?.randomUUID) return c.randomUUID();
|
|
298
|
+
const hex = (bytes) => Math.floor(Math.random() * 16 ** (bytes * 2)).toString(16).padStart(bytes * 2, "0");
|
|
299
|
+
return `${hex(4)}-${hex(2)}-${hex(2)}-${hex(2)}-${hex(6)}`;
|
|
300
|
+
}
|
|
301
|
+
var systemClock = Object.freeze({
|
|
302
|
+
nowWallSeconds: () => Date.now() / 1e3,
|
|
303
|
+
nowMonotonic: () => globalThis.performance.now()
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
export { INTEGRATION_RECOVERY, IntegrationAuthError, IntegrationAuthRequiredError, IntegrationExecutionError, IntegrationPolicyError, IntegrationRateLimitedError, IntegrationTransientReadError, IntegrationTransportError, closedRecoveryFields, defaultUuid, isClosedRecoveryTuple, systemClock };
|
|
307
|
+
//# sourceMappingURL=chunk-KCAXIOZS.js.map
|
|
308
|
+
//# sourceMappingURL=chunk-KCAXIOZS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/contracts/integration-recovery.ts","../src/tools/execution-errors.ts","../src/integrations/errors.ts","../src/internal/uuid.ts"],"names":["recovery"],"mappings":"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","file":"chunk-KCAXIOZS.js"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// src/events/errors.ts
|
|
2
|
+
var DURABLE_JSON_SUBJECTS = /* @__PURE__ */ new Set([
|
|
3
|
+
"tool_result",
|
|
4
|
+
"workflow_result",
|
|
5
|
+
"event_metadata",
|
|
6
|
+
"memory_document",
|
|
7
|
+
"pending_tool_call",
|
|
8
|
+
"event"
|
|
9
|
+
]);
|
|
10
|
+
var InvalidDurableValueError = class extends Error {
|
|
11
|
+
constructor(subject) {
|
|
12
|
+
super(`Invalid durable JSON value for ${subject}`);
|
|
13
|
+
this.subject = subject;
|
|
14
|
+
this.name = "InvalidDurableValueError";
|
|
15
|
+
}
|
|
16
|
+
subject;
|
|
17
|
+
code = "INVALID_DURABLE_VALUE";
|
|
18
|
+
};
|
|
19
|
+
var DurableJsonLimitError = class extends Error {
|
|
20
|
+
constructor(subject, maxBytes) {
|
|
21
|
+
super(`Durable JSON value for ${subject} exceeds ${maxBytes} UTF-8 bytes`);
|
|
22
|
+
this.subject = subject;
|
|
23
|
+
this.maxBytes = maxBytes;
|
|
24
|
+
this.name = "DurableJsonLimitError";
|
|
25
|
+
}
|
|
26
|
+
subject;
|
|
27
|
+
maxBytes;
|
|
28
|
+
code = "EVENT_PAYLOAD_TOO_LARGE";
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// src/observability.ts
|
|
32
|
+
var SPAN_NAMES = /* @__PURE__ */ new Set([
|
|
33
|
+
"kaji.turn",
|
|
34
|
+
"kaji.provider",
|
|
35
|
+
"kaji.tool",
|
|
36
|
+
"kaji.integration.auth",
|
|
37
|
+
"kaji.integration.request"
|
|
38
|
+
]);
|
|
39
|
+
var TRACE_ATTRIBUTES = /* @__PURE__ */ new Set([
|
|
40
|
+
"session.id",
|
|
41
|
+
"turn.id",
|
|
42
|
+
"request.id",
|
|
43
|
+
"trace.id",
|
|
44
|
+
"tool.call_id",
|
|
45
|
+
"provider.family",
|
|
46
|
+
"integration.name",
|
|
47
|
+
"integration.operation",
|
|
48
|
+
"http.status_family"
|
|
49
|
+
]);
|
|
50
|
+
var METRIC_UNITS = Object.freeze({
|
|
51
|
+
"kaji.turn.queue_wait_ms": "ms",
|
|
52
|
+
"kaji.turn.duration_ms": "ms",
|
|
53
|
+
"kaji.turn.iterations": "count",
|
|
54
|
+
"kaji.provider.duration_ms": "ms",
|
|
55
|
+
"kaji.provider.retries": "count",
|
|
56
|
+
"kaji.replay.input_events": "count",
|
|
57
|
+
"kaji.context.messages": "count",
|
|
58
|
+
"kaji.context.characters": "count",
|
|
59
|
+
"kaji.tool.queue_wait_ms": "ms",
|
|
60
|
+
"kaji.tool.active": "gauge",
|
|
61
|
+
"kaji.tool.duration_ms": "ms",
|
|
62
|
+
"kaji.journal.failures": "count",
|
|
63
|
+
"kaji.subscriber.lag_events": "count",
|
|
64
|
+
"kaji.subscriber.overflow": "count",
|
|
65
|
+
"kaji.integration.auth_ms": "ms",
|
|
66
|
+
"kaji.integration.request_ms": "ms"
|
|
67
|
+
});
|
|
68
|
+
Object.freeze(
|
|
69
|
+
Object.keys(METRIC_UNITS)
|
|
70
|
+
);
|
|
71
|
+
var ALLOWED_LABELS = Object.freeze({
|
|
72
|
+
"kaji.turn.queue_wait_ms": [],
|
|
73
|
+
"kaji.turn.duration_ms": ["outcome"],
|
|
74
|
+
"kaji.turn.iterations": ["outcome"],
|
|
75
|
+
"kaji.provider.duration_ms": ["provider_family", "status"],
|
|
76
|
+
"kaji.provider.retries": ["provider_family"],
|
|
77
|
+
"kaji.replay.input_events": [],
|
|
78
|
+
"kaji.context.messages": [],
|
|
79
|
+
"kaji.context.characters": [],
|
|
80
|
+
"kaji.tool.queue_wait_ms": ["outcome"],
|
|
81
|
+
"kaji.tool.active": [],
|
|
82
|
+
"kaji.tool.duration_ms": ["outcome", "error_code"],
|
|
83
|
+
"kaji.journal.failures": ["stage"],
|
|
84
|
+
"kaji.subscriber.lag_events": [],
|
|
85
|
+
"kaji.subscriber.overflow": ["stage"],
|
|
86
|
+
"kaji.integration.auth_ms": ["integration", "operation", "outcome"],
|
|
87
|
+
"kaji.integration.request_ms": ["integration", "operation", "outcome"]
|
|
88
|
+
});
|
|
89
|
+
var STABLE_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
90
|
+
"NONE",
|
|
91
|
+
"OTHER",
|
|
92
|
+
"INVALID_TOOL_SCHEMA",
|
|
93
|
+
"INVALID_TOOL_ARGUMENTS",
|
|
94
|
+
"UNCLASSIFIED_TOOL_RISK",
|
|
95
|
+
"MISSING_TOOL_IDENTITY",
|
|
96
|
+
"TOOL_NOT_ALLOWED",
|
|
97
|
+
"APPROVAL_UNAVAILABLE",
|
|
98
|
+
"APPROVAL_REJECTED",
|
|
99
|
+
"APPROVAL_TIMEOUT",
|
|
100
|
+
"TOOL_CANCELLED",
|
|
101
|
+
"TOOL_TIMEOUT",
|
|
102
|
+
"TURN_TIMEOUT",
|
|
103
|
+
"TOOL_EXECUTION_FAILED",
|
|
104
|
+
"TOOL_START_RECORD_FAILED",
|
|
105
|
+
"IDEMPOTENCY_CAPACITY_EXCEEDED",
|
|
106
|
+
"IDEMPOTENCY_CONFLICT",
|
|
107
|
+
"INTEGRATION_AUTH_ERROR",
|
|
108
|
+
"INTEGRATION_AUTH_REQUIRED",
|
|
109
|
+
"INTEGRATION_API_ERROR",
|
|
110
|
+
"INTEGRATION_POLICY_REJECTED",
|
|
111
|
+
"INTEGRATION_RATE_LIMITED",
|
|
112
|
+
"INTEGRATION_REDIRECT_REJECTED",
|
|
113
|
+
"INTEGRATION_RESPONSE_LIMIT"
|
|
114
|
+
]);
|
|
115
|
+
function validLabel(key, value) {
|
|
116
|
+
if (typeof value !== "string") return false;
|
|
117
|
+
const text = value;
|
|
118
|
+
if (key === "provider_family") {
|
|
119
|
+
return text === "openai" || text === "anthropic" || text === "custom";
|
|
120
|
+
}
|
|
121
|
+
if (key === "status") {
|
|
122
|
+
return text === "success" || text === "cancelled" || text === "error";
|
|
123
|
+
}
|
|
124
|
+
if (key === "stage") {
|
|
125
|
+
return ["append", "publish", "lag", "overflow"].includes(text);
|
|
126
|
+
}
|
|
127
|
+
if (key === "error_code") return STABLE_ERROR_CODES.has(text);
|
|
128
|
+
if (key === "outcome") {
|
|
129
|
+
return [
|
|
130
|
+
"acquired",
|
|
131
|
+
"completed",
|
|
132
|
+
"failed",
|
|
133
|
+
"cancelled",
|
|
134
|
+
"timeout",
|
|
135
|
+
"not_started",
|
|
136
|
+
"unknown",
|
|
137
|
+
"success",
|
|
138
|
+
"error"
|
|
139
|
+
].includes(text);
|
|
140
|
+
}
|
|
141
|
+
if (key === "integration") return text === "github" || text === "gmail";
|
|
142
|
+
if (key === "operation") return ["read", "mutation", "token"].includes(text);
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
function recordMetric(sink, name, value, labels) {
|
|
146
|
+
if (!Number.isFinite(value)) return;
|
|
147
|
+
if (sink === NOOP_METRICS) return;
|
|
148
|
+
if (!Object.hasOwn(METRIC_UNITS, name)) return;
|
|
149
|
+
const sanitized = {};
|
|
150
|
+
const allowed = ALLOWED_LABELS[name];
|
|
151
|
+
const supplied = Object.keys(labels);
|
|
152
|
+
if (supplied.length !== allowed.length || supplied.some((key) => !allowed.includes(key))) return;
|
|
153
|
+
for (const key of allowed) {
|
|
154
|
+
const raw = labels[key];
|
|
155
|
+
if (!validLabel(key, raw)) return;
|
|
156
|
+
sanitized[key] = raw;
|
|
157
|
+
}
|
|
158
|
+
const measurement = Object.freeze({
|
|
159
|
+
name,
|
|
160
|
+
value,
|
|
161
|
+
unit: METRIC_UNITS[name],
|
|
162
|
+
labels: Object.freeze(sanitized)
|
|
163
|
+
});
|
|
164
|
+
try {
|
|
165
|
+
const pending = sink.record(measurement);
|
|
166
|
+
if (pending !== void 0) void Promise.resolve(pending).catch(() => void 0);
|
|
167
|
+
} catch {
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
var NOOP_SPAN = Object.freeze({
|
|
171
|
+
setAttribute: () => {
|
|
172
|
+
},
|
|
173
|
+
recordError: () => {
|
|
174
|
+
},
|
|
175
|
+
end: () => {
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
var NOOP_METRICS = Object.freeze({ record: () => {
|
|
179
|
+
} });
|
|
180
|
+
var NOOP_TRACE = Object.freeze({ startSpan: () => NOOP_SPAN });
|
|
181
|
+
function validTraceAttribute(name, value) {
|
|
182
|
+
if (typeof value !== "string") return false;
|
|
183
|
+
if (name === "integration.name") return value === "github" || value === "gmail";
|
|
184
|
+
if (name === "integration.operation") {
|
|
185
|
+
return value === "read" || value === "mutation" || value === "token";
|
|
186
|
+
}
|
|
187
|
+
if (name === "http.status_family") return /^(?:[1-5]xx|none)$/.test(value);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
function startSpan(sink, name, attributes = {}) {
|
|
191
|
+
if (sink === NOOP_TRACE) return NOOP_SPAN;
|
|
192
|
+
if (!SPAN_NAMES.has(name)) return NOOP_SPAN;
|
|
193
|
+
let safeAttributes;
|
|
194
|
+
try {
|
|
195
|
+
const entries = Object.entries(attributes);
|
|
196
|
+
if (entries.some(
|
|
197
|
+
([key, value]) => !TRACE_ATTRIBUTES.has(key) || !validTraceAttribute(key, value)
|
|
198
|
+
)) {
|
|
199
|
+
return NOOP_SPAN;
|
|
200
|
+
}
|
|
201
|
+
safeAttributes = Object.freeze(Object.fromEntries(entries));
|
|
202
|
+
} catch {
|
|
203
|
+
return NOOP_SPAN;
|
|
204
|
+
}
|
|
205
|
+
let inner;
|
|
206
|
+
try {
|
|
207
|
+
inner = sink.startSpan(name, safeAttributes);
|
|
208
|
+
} catch {
|
|
209
|
+
return NOOP_SPAN;
|
|
210
|
+
}
|
|
211
|
+
let ended = false;
|
|
212
|
+
return {
|
|
213
|
+
setAttribute(attributeName, value) {
|
|
214
|
+
if (ended) return;
|
|
215
|
+
if (!TRACE_ATTRIBUTES.has(attributeName) || !validTraceAttribute(attributeName, value))
|
|
216
|
+
return;
|
|
217
|
+
try {
|
|
218
|
+
inner.setAttribute(attributeName, value);
|
|
219
|
+
} catch {
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
recordError(error) {
|
|
223
|
+
if (ended) return;
|
|
224
|
+
try {
|
|
225
|
+
const kind = error instanceof Error ? error.name : typeof error;
|
|
226
|
+
inner.recordError(new Error(`${kind}: details redacted`));
|
|
227
|
+
} catch {
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
end() {
|
|
231
|
+
if (ended) return;
|
|
232
|
+
ended = true;
|
|
233
|
+
try {
|
|
234
|
+
inner.end();
|
|
235
|
+
} catch {
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export { DURABLE_JSON_SUBJECTS, DurableJsonLimitError, InvalidDurableValueError, NOOP_METRICS, NOOP_TRACE, recordMetric, startSpan };
|
|
242
|
+
//# sourceMappingURL=chunk-LSJ4AVO2.js.map
|
|
243
|
+
//# sourceMappingURL=chunk-LSJ4AVO2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/events/errors.ts","../src/observability.ts"],"names":[],"mappings":"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","file":"chunk-LSJ4AVO2.js"}
|