@zackbart/connecta 0.28.0 → 0.29.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 (320) hide show
  1. package/CHANGELOG.md +961 -5
  2. package/README.md +62 -39
  3. package/bin/connecta.mjs +110 -139
  4. package/bin/meta-tool-names.d.mts +2 -0
  5. package/bin/meta-tool-names.mjs +9 -0
  6. package/bin/version.mjs +3 -0
  7. package/dist/access-tokens.js +53 -63
  8. package/dist/activity-request.js +8 -0
  9. package/dist/activity.d.ts +76 -42
  10. package/dist/activity.js +110 -42
  11. package/dist/auth/clerk-sdk/client.d.ts +65 -0
  12. package/dist/auth/clerk-sdk/client.js +5 -0
  13. package/dist/auth/clerk-sdk/generated.js +1845 -0
  14. package/dist/auth/clerk-transport.js +19 -0
  15. package/dist/auth/clerk.d.ts +17 -7
  16. package/dist/auth/clerk.js +189 -107
  17. package/dist/auth/cloudflare-access.js +25 -26
  18. package/dist/auth/downstream-client-metadata.d.ts +29 -0
  19. package/dist/auth/downstream-client-metadata.js +133 -0
  20. package/dist/auth/downstream-oauth.js +1632 -1509
  21. package/dist/auth/downstream-revocation.js +106 -0
  22. package/dist/auth/oauth-token-response.js +231 -0
  23. package/dist/auth/oauth-v2-migration.js +116 -0
  24. package/dist/auth/static-oauth.js +526 -0
  25. package/dist/auth-elicitation.js +283 -0
  26. package/dist/branding.d.ts +8 -16
  27. package/dist/branding.js +26 -59
  28. package/dist/byte-read-response.js +39 -0
  29. package/dist/call-admission.js +12 -16
  30. package/dist/catalog-cache.js +739 -0
  31. package/dist/catalog-drift.d.ts +50 -15
  32. package/dist/catalog-drift.js +365 -128
  33. package/dist/catalog-fingerprint.js +2 -4
  34. package/dist/catalog-freshness.js +13 -0
  35. package/dist/catalog-limits.js +2 -2
  36. package/dist/catalog-service.js +368 -224
  37. package/dist/catalog.js +43 -84
  38. package/dist/concurrency.js +3 -4
  39. package/dist/config-defaults.d.ts +39 -0
  40. package/dist/config-defaults.js +46 -0
  41. package/dist/config-schema.d.ts +181 -0
  42. package/dist/config-schema.js +435 -0
  43. package/dist/config-value-sources.js +102 -0
  44. package/dist/config.d.ts +631 -0
  45. package/dist/config.js +503 -0
  46. package/dist/connector-access.d.ts +1 -0
  47. package/dist/connector-access.js +13 -15
  48. package/dist/connector-caller.d.ts +8 -0
  49. package/dist/connector-caller.js +15 -6
  50. package/dist/connector-scope.js +1 -1
  51. package/dist/connectors/api-connector.d.ts +220 -0
  52. package/dist/connectors/api-connector.js +214 -0
  53. package/dist/connectors/api.d.ts +8 -71
  54. package/dist/connectors/api.js +13 -99
  55. package/dist/connectors/guarded-fetch.d.ts +144 -0
  56. package/dist/connectors/guarded-fetch.js +108 -25
  57. package/dist/connectors/negotiation-cache.js +46 -0
  58. package/dist/connectors/option-shapes.js +27 -0
  59. package/dist/connectors/remote-mcp.d.ts +30 -4
  60. package/dist/connectors/remote-mcp.js +1780 -351
  61. package/dist/connectors/resource-uri.js +335 -0
  62. package/dist/credential-contract.d.ts +10 -0
  63. package/dist/credential-rules.js +1 -3
  64. package/dist/credential-url.js +108 -0
  65. package/dist/credentials.d.ts +6 -1
  66. package/dist/credentials.js +27 -18
  67. package/dist/d1.d.ts +130 -0
  68. package/dist/d1.js +290 -0
  69. package/dist/describe-config.d.ts +165 -0
  70. package/dist/describe-config.js +315 -0
  71. package/dist/described.js +106 -0
  72. package/dist/downstream-input-context.js +119 -0
  73. package/dist/downstream-input.js +323 -0
  74. package/dist/errors.d.ts +97 -20
  75. package/dist/errors.js +158 -80
  76. package/dist/execute.js +453 -305
  77. package/dist/executor-admission.d.ts +1 -0
  78. package/dist/executor-admission.js +11 -15
  79. package/dist/executor-contract.d.ts +20 -0
  80. package/dist/executor-contract.js +48 -0
  81. package/dist/executor-result.js +24 -9
  82. package/dist/executors/quickjs-child.js +3 -4
  83. package/dist/executors/quickjs-runtime.js +147 -59
  84. package/dist/executors/quickjs.js +29 -35
  85. package/dist/favicon.js +1 -2
  86. package/dist/fix-prompt.js +1 -3
  87. package/dist/guest-runtime.js +188 -0
  88. package/dist/guest-types.d.ts +176 -0
  89. package/dist/guest-types.js +1 -0
  90. package/dist/html-security.js +24 -0
  91. package/dist/identity.js +1 -3
  92. package/dist/inbound-credential.js +52 -0
  93. package/dist/index.d.ts +25 -257
  94. package/dist/index.js +65 -478
  95. package/dist/invocation-auth.js +69 -0
  96. package/dist/invocation.js +230 -73
  97. package/dist/json-schema.d.ts +1 -1
  98. package/dist/mcp-client-context.js +35 -0
  99. package/dist/mcp-result.js +11 -7
  100. package/dist/meta-output.js +76 -0
  101. package/dist/meta-tool-names.d.ts +2 -0
  102. package/dist/meta-tool-names.js +3 -0
  103. package/dist/meta-tools.js +285 -209
  104. package/dist/module-contracts.d.ts +8 -23
  105. package/dist/node.d.ts +0 -2
  106. package/dist/node.js +2 -2
  107. package/dist/oauth-callback-outcome.js +1 -3
  108. package/dist/oauth-handoff.js +117 -0
  109. package/dist/oauth-partition.js +17 -0
  110. package/dist/oauth-sealing.js +20 -0
  111. package/dist/operator-record.d.ts +137 -0
  112. package/dist/operator-record.js +420 -0
  113. package/dist/operator-ui/assets.js +31 -0
  114. package/dist/operator-ui/contract.d.ts +72 -0
  115. package/dist/operator-ui/contract.js +1 -0
  116. package/dist/operator-ui/fix-prompts.d.ts +18 -0
  117. package/dist/operator-ui/generated.js +5 -4
  118. package/dist/operator-ui/model.d.ts +12 -87
  119. package/dist/operator-ui/model.js +2 -9
  120. package/dist/operator-ui/setup-commands.js +1 -3
  121. package/dist/operator-ui/view.d.ts +323 -0
  122. package/dist/operator-ui/view.js +62 -189
  123. package/dist/page-styles.js +2 -3
  124. package/dist/program-source.js +14 -2
  125. package/dist/{exempt-writes.js → program-writes.js} +55 -18
  126. package/dist/provider.d.ts +142 -0
  127. package/dist/provider.js +187 -0
  128. package/dist/providers/_shared/google/result-size.js +57 -0
  129. package/dist/providers/_shared/google/service-account.d.ts +58 -0
  130. package/dist/providers/_shared/google/service-account.js +500 -0
  131. package/dist/providers/_shared/google/workspace.d.ts +276 -0
  132. package/dist/providers/_shared/google/workspace.js +518 -0
  133. package/dist/providers/basecamp/index.d.ts +43 -0
  134. package/dist/providers/basecamp/index.js +997 -0
  135. package/dist/providers/basecamp/skill.generated.js +9 -0
  136. package/dist/providers/breeze/index.d.ts +34 -0
  137. package/dist/providers/breeze/index.js +1446 -0
  138. package/dist/providers/breeze/skill.generated.js +9 -0
  139. package/dist/providers/ccb/index.d.ts +103 -0
  140. package/dist/providers/ccb/index.js +1725 -0
  141. package/dist/providers/ccb/skill.generated.js +9 -0
  142. package/dist/providers/{cloudflare.d.ts → cloudflare/index.d.ts} +8 -7
  143. package/dist/providers/{cloudflare.js → cloudflare/index.js} +171 -738
  144. package/dist/providers/cloudflare/skill.generated.js +10 -0
  145. package/dist/providers/docs/index.d.ts +54 -0
  146. package/dist/providers/docs/index.js +1237 -0
  147. package/dist/providers/docs/skill.generated.js +9 -0
  148. package/dist/providers/drive/index.d.ts +53 -0
  149. package/dist/providers/drive/index.js +1523 -0
  150. package/dist/providers/drive/skill.generated.js +9 -0
  151. package/dist/providers/forms/index.d.ts +54 -0
  152. package/dist/providers/forms/index.js +1217 -0
  153. package/dist/providers/forms/skill.generated.js +11 -0
  154. package/dist/providers/github/auth.d.ts +32 -0
  155. package/dist/providers/github/auth.js +361 -0
  156. package/dist/providers/github/hosted.js +218 -0
  157. package/dist/providers/github/index.d.ts +13 -0
  158. package/dist/providers/github/index.js +140 -0
  159. package/dist/providers/github/key.js +100 -0
  160. package/dist/providers/github/rest.js +321 -0
  161. package/dist/providers/github/scope.d.ts +29 -0
  162. package/dist/providers/github/scope.js +124 -0
  163. package/dist/providers/github/skill.generated.js +8 -0
  164. package/dist/providers/gmail/index.d.ts +51 -0
  165. package/dist/providers/gmail/index.js +1436 -0
  166. package/dist/providers/gmail/skill.generated.js +9 -0
  167. package/dist/providers/{linear.d.ts → linear/index.d.ts} +11 -14
  168. package/dist/providers/linear/index.js +352 -0
  169. package/dist/providers/linear/skill.generated.js +8 -0
  170. package/dist/providers/{mixpanel.d.ts → mixpanel/index.d.ts} +5 -10
  171. package/dist/providers/mixpanel/index.js +416 -0
  172. package/dist/providers/mixpanel/skill.generated.js +9 -0
  173. package/dist/providers/{notion.d.ts → notion/index.d.ts} +8 -8
  174. package/dist/providers/{notion.js → notion/index.js} +226 -239
  175. package/dist/providers/notion/skill.generated.js +10 -0
  176. package/dist/providers/overflow/index.d.ts +60 -0
  177. package/dist/providers/overflow/index.js +1535 -0
  178. package/dist/providers/overflow/skill.generated.js +8 -0
  179. package/dist/providers/planning-center/index.d.ts +59 -0
  180. package/dist/providers/planning-center/index.js +2199 -0
  181. package/dist/providers/planning-center/skill.generated.js +10 -0
  182. package/dist/providers/{revenuecat.d.ts → revenuecat/index.d.ts} +5 -10
  183. package/dist/providers/revenuecat/index.js +557 -0
  184. package/dist/providers/revenuecat/skill.generated.js +11 -0
  185. package/dist/providers/sheets/index.d.ts +54 -0
  186. package/dist/providers/sheets/index.js +1237 -0
  187. package/dist/providers/sheets/skill.generated.js +10 -0
  188. package/dist/providers/slides/index.d.ts +53 -0
  189. package/dist/providers/slides/index.js +2645 -0
  190. package/dist/providers/slides/skill.generated.js +9 -0
  191. package/dist/providers/{stripe.d.ts → stripe/index.d.ts} +5 -12
  192. package/dist/providers/stripe/index.js +266 -0
  193. package/dist/providers/stripe/skill.generated.js +11 -0
  194. package/dist/providers/tithely/index.d.ts +49 -0
  195. package/dist/providers/tithely/index.js +1003 -0
  196. package/dist/providers/tithely/skill.generated.js +8 -0
  197. package/dist/providers/{vercel.d.ts → vercel/index.d.ts} +8 -8
  198. package/dist/providers/vercel/index.js +1038 -0
  199. package/dist/providers/vercel/mcp-ownership.js +212 -0
  200. package/dist/providers/vercel/skill.generated.js +11 -0
  201. package/dist/registry.d.ts +108 -171
  202. package/dist/registry.js +513 -925
  203. package/dist/request-state.js +21 -0
  204. package/dist/resource-read.js +100 -0
  205. package/dist/result-shapes.js +17 -49
  206. package/dist/retired-toolkits.js +1 -1
  207. package/dist/routes/access-tokens.js +3 -6
  208. package/dist/routes/activity-context.js +21 -0
  209. package/dist/routes/activity-disclosure.js +40 -0
  210. package/dist/routes/activity.js +59 -21
  211. package/dist/routes/actor-labels.js +3 -50
  212. package/dist/routes/connect.js +221 -0
  213. package/dist/routes/credentials.js +15 -27
  214. package/dist/routes/mcp.js +356 -130
  215. package/dist/routes/oauth-client-metadata.js +15 -0
  216. package/dist/routes/oauth-management.js +45 -107
  217. package/dist/routes/oauth.js +136 -57
  218. package/dist/routes/operator.js +3 -3
  219. package/dist/routes/shared.d.ts +25 -64
  220. package/dist/routes/shared.js +160 -80
  221. package/dist/routes/skills.js +30 -0
  222. package/dist/routes/ui-config.js +225 -0
  223. package/dist/routes/ui-data.js +40 -35
  224. package/dist/routes/ui.js +66 -56
  225. package/dist/runtime/admission.js +4 -2
  226. package/dist/runtime/call-admission.js +3 -1
  227. package/dist/runtime/connector-scope.js +1 -4
  228. package/dist/runtime/run.js +10 -39
  229. package/dist/runtime/services.js +12 -117
  230. package/dist/runtime/shared-read.js +1 -3
  231. package/dist/runtime/storage.js +8 -1
  232. package/dist/sent-secrets.d.ts +52 -0
  233. package/dist/sent-secrets.js +474 -0
  234. package/dist/server.js +28 -71
  235. package/dist/skills.js +406 -174
  236. package/dist/sqlite.d.ts +48 -0
  237. package/dist/sqlite.js +166 -0
  238. package/dist/storage/keys.js +428 -0
  239. package/dist/storage/memory.js +7 -0
  240. package/dist/storage/sql.d.ts +66 -0
  241. package/dist/storage/sql.js +534 -0
  242. package/dist/timeout.js +4 -2
  243. package/dist/tool-name.js +17 -0
  244. package/dist/tool-safety.d.ts +9 -35
  245. package/dist/tool-safety.js +20 -40
  246. package/dist/types.d.ts +320 -54
  247. package/dist/types.js +0 -1
  248. package/dist/ui.d.ts +7 -19
  249. package/dist/ui.js +76 -90
  250. package/dist/url-safety.js +3 -6
  251. package/dist/usage-guide.js +137 -0
  252. package/dist/validate.d.ts +7 -0
  253. package/dist/validate.js +309 -47
  254. package/dist/version.d.ts +1 -7
  255. package/dist/version.js +3 -7
  256. package/dist/worker.d.ts +11 -0
  257. package/dist/worker.js +434 -0
  258. package/documentation/architecture.md +665 -230
  259. package/documentation/auth.md +962 -458
  260. package/documentation/code-mode.md +501 -312
  261. package/documentation/meta-tools.md +449 -200
  262. package/documentation/operator-tests.md +93 -0
  263. package/documentation/provider-migration-0.29.md +60 -0
  264. package/examples/worker/AGENTS.md +34 -12
  265. package/examples/worker/README.md +286 -255
  266. package/examples/worker/kv-to-d1.wrangler.jsonc +26 -0
  267. package/examples/worker/scripts/copy-kv-to-d1.mjs +162 -0
  268. package/examples/worker/src/connecta.config.ts +151 -0
  269. package/examples/worker/src/index.ts +14 -197
  270. package/examples/worker/wrangler.jsonc +15 -35
  271. package/package.json +125 -35
  272. package/templates/node/.dockerignore +1 -2
  273. package/templates/node/.env.example +20 -21
  274. package/templates/node/AGENTS.md +21 -17
  275. package/templates/node/Dockerfile +3 -5
  276. package/templates/node/README.md +133 -58
  277. package/templates/node/docker-compose.yml +11 -12
  278. package/templates/node/package.json +4 -2
  279. package/templates/node/src/connecta.config.ts +119 -0
  280. package/templates/node/src/index.ts +9 -154
  281. package/templates/node/src/provision-token.ts +17 -0
  282. package/AGENTS.md +0 -170
  283. package/dist/artifacts/connector.d.ts +0 -58
  284. package/dist/artifacts/connector.js +0 -730
  285. package/dist/artifacts/document.js +0 -86
  286. package/dist/artifacts/guide.js +0 -140
  287. package/dist/artifacts/html-scan.js +0 -329
  288. package/dist/artifacts/json.js +0 -78
  289. package/dist/artifacts/kv-store.d.ts +0 -20
  290. package/dist/artifacts/kv-store.js +0 -140
  291. package/dist/artifacts/markdown.js +0 -478
  292. package/dist/artifacts/module.d.ts +0 -37
  293. package/dist/artifacts/module.js +0 -66
  294. package/dist/artifacts/operations.d.ts +0 -197
  295. package/dist/artifacts/operations.js +0 -1002
  296. package/dist/artifacts/refresh.d.ts +0 -55
  297. package/dist/artifacts/refresh.js +0 -236
  298. package/dist/artifacts/routes.js +0 -206
  299. package/dist/artifacts/types.d.ts +0 -214
  300. package/dist/artifacts/types.js +0 -22
  301. package/dist/artifacts/validate.d.ts +0 -62
  302. package/dist/artifacts/validate.js +0 -651
  303. package/dist/artifacts.d.ts +0 -6
  304. package/dist/artifacts.js +0 -9
  305. package/dist/auth/bearer.d.ts +0 -11
  306. package/dist/auth/bearer.js +0 -50
  307. package/dist/providers/linear.js +0 -217
  308. package/dist/providers/mixpanel.js +0 -247
  309. package/dist/providers/revenuecat.js +0 -317
  310. package/dist/providers/stripe.js +0 -253
  311. package/dist/providers/vercel.js +0 -1253
  312. package/dist/storage/file.d.ts +0 -15
  313. package/dist/storage/file.js +0 -455
  314. package/ethos.md +0 -93
  315. package/examples/worker/src/cloudflare-kv.ts +0 -43
  316. package/examples/worker/src/d1-activity-row.ts +0 -155
  317. package/examples/worker/src/d1-activity.ts +0 -147
  318. package/examples/worker/src/d1-storage.ts +0 -138
  319. package/examples/worker/src/r2-artifact-blobs.ts +0 -29
  320. package/templates/node/src/file-activity.ts +0 -182
@@ -1,214 +0,0 @@
1
- /** How a page's source is interpreted: self-contained HTML, or Markdown rendered at read time. */
2
- export type ArtifactKind = "html" | "markdown";
3
- /**
4
- * Who made a version. The same shape as an activity actor, taken from the
5
- * inbound authorization that admitted the call — never from its arguments.
6
- */
7
- export interface ArtifactActor {
8
- kind: string;
9
- id?: string;
10
- namespace?: string;
11
- }
12
- /** What produced a version. */
13
- export type ArtifactVersionOp = "create" | "update" | "patch" | "rollback" | "set" | "refresh";
14
- /**
15
- * A version stream: the view (the page source), one per named data document,
16
- * and the refresh program.
17
- */
18
- export type ArtifactStream = "view" | `doc:${string}` | "refresh";
19
- /** One immutable version in one stream. Written once, never rewritten. */
20
- export interface ArtifactVersionRecord {
21
- /** 1-based and dense within its stream. */
22
- version: number;
23
- /** Content address of the body (a SHA-256 hex digest). Absent on a removal. */
24
- body?: string;
25
- /** UTF-8 bytes of the body; 0 on a removal. */
26
- bytes: number;
27
- by: ArtifactActor;
28
- /** ISO-8601 instant the version was committed. */
29
- at: string;
30
- op: ArtifactVersionOp;
31
- /** Set by a rollback: the version whose body this one reuses. */
32
- restoredFrom?: number;
33
- /** Set on a version a refresh run produced. */
34
- runId?: string;
35
- /** A document removal. The name keeps its history and its numbering. */
36
- removed?: true;
37
- }
38
- /**
39
- * The one mutable record per artifact. Every write is a compare-and-set of
40
- * this record, which carries the latest version of every stream; earlier
41
- * versions live beside it, immutable.
42
- */
43
- export interface ArtifactHeadRecord {
44
- /** Increments on every write of any kind. */
45
- revision: number;
46
- title: string;
47
- kind: ArtifactKind;
48
- archived: boolean;
49
- createdBy: ArtifactActor;
50
- createdAt: string;
51
- updatedBy: ArtifactActor;
52
- updatedAt: string;
53
- view: ArtifactVersionRecord;
54
- /** Latest version of every document name ever set, removals included. */
55
- documents: Record<string, ArtifactVersionRecord>;
56
- /** Absent until a refresh program is configured. */
57
- refresh?: ArtifactRefreshState;
58
- }
59
- export type ArtifactRefreshSchedule = "manual" | "daily" | "weekly";
60
- export interface ArtifactRefreshState {
61
- program: ArtifactVersionRecord;
62
- /** Trusted caller captured by the built-in connector, reauthorized on every run. */
63
- owner?: {
64
- identity: import("../types.js").AuthenticatedIdentity;
65
- pool?: string;
66
- };
67
- document: string;
68
- schedule: ArtifactRefreshSchedule;
69
- configuredAt: string;
70
- /** An expiring CAS claim. Only its run may publish data. */
71
- claim?: {
72
- runId: string;
73
- until: string;
74
- };
75
- last?: {
76
- runId: string;
77
- at: string;
78
- status: "succeeded" | "unchanged" | "failed" | "superseded";
79
- documentVersion?: number;
80
- };
81
- }
82
- /** One refresh run, as history keeps it. */
83
- export interface ArtifactRunRecord {
84
- runId: string;
85
- /** ISO-8601; with `runId`, what orders history. */
86
- startedAt: string;
87
- finishedAt?: string;
88
- status: "running" | "succeeded" | "unchanged" | "failed" | "superseded";
89
- trigger: "schedule" | {
90
- manual: ArtifactActor;
91
- };
92
- /** The refresh program version the run executed. */
93
- programVersion: number;
94
- /** The data version the run produced, when it produced one. */
95
- documentVersion?: number;
96
- errorCode?: string;
97
- /** Bounded failure message, for agents reading run history only. */
98
- message?: string;
99
- /** Bounded captured console output, for agents reading run history only. */
100
- logs?: string;
101
- }
102
- /**
103
- * Where an artifact store keeps bodies when they should not sit in the key
104
- * value store itself — an R2 bucket on Workers. Keys are content addresses,
105
- * so `put` of an existing key writes the same bytes again.
106
- */
107
- export interface ArtifactBlobStore {
108
- put(key: string, body: string): Promise<void>;
109
- get(key: string): Promise<string | null>;
110
- }
111
- /**
112
- * The storage primitives the artifacts module needs, and nothing else: every
113
- * rule — conflicts, patches, limits, validation — lives above this contract,
114
- * once. `kvArtifactStore` is the reference implementation.
115
- */
116
- export interface ArtifactStore {
117
- /** The head and an opaque token for `swapHead`, or null when absent. */
118
- head(id: string): Promise<{
119
- head: ArtifactHeadRecord;
120
- token: string;
121
- } | null>;
122
- /**
123
- * Atomically replace the head when its token is still `expected` (null:
124
- * create only when absent). Of N concurrent swaps from one token exactly one
125
- * returns true.
126
- */
127
- swapHead(id: string, expected: string | null, next: ArtifactHeadRecord): Promise<boolean>;
128
- /** Heads in id order after `after`, and the cursor to continue from. */
129
- heads(options: {
130
- after?: string;
131
- limit: number;
132
- }): Promise<{
133
- heads: {
134
- id: string;
135
- head: ArtifactHeadRecord;
136
- }[];
137
- next?: string;
138
- }>;
139
- /** Content-addressed and idempotent. */
140
- putBody(key: string, body: string): Promise<void>;
141
- body(key: string): Promise<string | null>;
142
- /** Idempotent: a version's record never changes once written. */
143
- putVersion(id: string, stream: ArtifactStream, version: number, record: ArtifactVersionRecord): Promise<void>;
144
- /** Stored versions below `below` (all when omitted), newest first. */
145
- versions(id: string, stream: ArtifactStream, options: {
146
- below?: number;
147
- limit: number;
148
- }): Promise<ArtifactVersionRecord[]>;
149
- /** Insert or replace one run by `runId`; retains the newest 50. */
150
- putRun(id: string, run: ArtifactRunRecord): Promise<void>;
151
- /** Newest first. */
152
- runs(id: string, limit: number): Promise<ArtifactRunRecord[]>;
153
- /** Durable, best-effort continuation for bounded scheduled scans. */
154
- refreshScanCursor(): Promise<string | undefined>;
155
- setRefreshScanCursor(after: string | undefined): Promise<void>;
156
- }
157
- /**
158
- * Size and shape bounds. Every write checks them, the guide states them, and a
159
- * deployment may only tighten them.
160
- */
161
- export interface ArtifactLimits {
162
- /** A page's source, in UTF-8 bytes. Default 1 MiB. */
163
- sourceBytes: number;
164
- /** One document, serialized, in UTF-8 bytes. Default 512 KiB. */
165
- documentBytes: number;
166
- /** Live documents per artifact. Default 16. */
167
- documents: number;
168
- /** Every live document together. Default 4 MiB. */
169
- totalDocumentBytes: number;
170
- /** Source plus injected data, as the viewer builds it. Default 5 MiB. */
171
- renderedBytes: number;
172
- /** Title length in characters. Default 160. */
173
- titleChars: number;
174
- /** Edits in one patch. Default 50. */
175
- patchEdits: number;
176
- /** One edit's `find`, in UTF-8 bytes. Default 16 KiB. */
177
- findBytes: number;
178
- /** A refresh program's source, in UTF-8 bytes. Default 64 KiB. */
179
- programBytes: number;
180
- /** Console output kept per refresh run, in UTF-8 bytes. Default 8 KiB. */
181
- runLogBytes: number;
182
- /** Object and array nesting in a document. Default 64. */
183
- jsonDepth: number;
184
- }
185
- export declare const DEFAULT_ARTIFACT_LIMITS: Readonly<ArtifactLimits>;
186
- /** Refresh runs a store keeps per artifact. */
187
- export declare const ARTIFACT_RUNS_RETAINED = 50;
188
- /**
189
- * Origins a page may load from. Scripts come from `scripts`; stylesheets and
190
- * `preconnect` hints from `styles`; web fonts from `fonts`. Each entry is an
191
- * exact `https:` origin, and the viewer's CSP names exactly these.
192
- */
193
- export interface ArtifactAllowlist {
194
- scripts: readonly string[];
195
- styles: readonly string[];
196
- fonts: readonly string[];
197
- }
198
- export declare const DEFAULT_ARTIFACT_ALLOWLIST: Readonly<ArtifactAllowlist>;
199
- /** One validation finding. `line` and `column` are 1-based, into the source. */
200
- export interface ArtifactIssue {
201
- code: string;
202
- severity: "error" | "warning";
203
- message: string;
204
- line?: number;
205
- column?: number;
206
- }
207
- /** What validation found. `ok` is exactly "no errors"; warnings never block a save. */
208
- export interface ArtifactValidation {
209
- ok: boolean;
210
- errors: ArtifactIssue[];
211
- warnings: ArtifactIssue[];
212
- /** Errors beyond the 20 reported. */
213
- errorsOmitted?: number;
214
- }
@@ -1,22 +0,0 @@
1
- // The artifacts module's public data shapes and the storage contract behind
2
- // them. Web-API only, and reachable only from the `./artifacts` subpath.
3
- export const DEFAULT_ARTIFACT_LIMITS = Object.freeze({
4
- sourceBytes: 1024 * 1024,
5
- documentBytes: 512 * 1024,
6
- documents: 16,
7
- totalDocumentBytes: 4 * 1024 * 1024,
8
- renderedBytes: 5 * 1024 * 1024,
9
- titleChars: 160,
10
- patchEdits: 50,
11
- findBytes: 16 * 1024,
12
- programBytes: 64 * 1024,
13
- runLogBytes: 8 * 1024,
14
- jsonDepth: 64,
15
- });
16
- /** Refresh runs a store keeps per artifact. */
17
- export const ARTIFACT_RUNS_RETAINED = 50;
18
- export const DEFAULT_ARTIFACT_ALLOWLIST = Object.freeze({
19
- scripts: Object.freeze([]),
20
- styles: Object.freeze([]),
21
- fonts: Object.freeze([]),
22
- });
@@ -1,62 +0,0 @@
1
- import { type ArtifactAllowlist, type ArtifactIssue, type ArtifactKind, type ArtifactLimits, type ArtifactValidation } from "./types.js";
2
- /** An artifact id: the URL slug. No leading `_`, so `_api` and `_frame` stay free. */
3
- export declare const ARTIFACT_ID: RegExp;
4
- /** Plain-object document maps must never resolve a name through their prototype. */
5
- export declare function validDocumentName(name: unknown): name is string;
6
- /** Fill in defaults; a deployment may only tighten a limit. Throws on anything else. */
7
- export declare function resolveLimits(partial?: Partial<ArtifactLimits>): ArtifactLimits;
8
- /** Normalize an allowlist: every entry an exact `https:` origin. Throws on anything else. */
9
- export declare function resolveAllowlist(partial?: Partial<ArtifactAllowlist>): ArtifactAllowlist;
10
- export interface ViewCheckInput {
11
- kind: ArtifactKind;
12
- source: string;
13
- /** The title a Markdown page renders with. */
14
- title?: string;
15
- /** Document names the page will receive, for the missing-name warning. */
16
- documentNames: readonly string[];
17
- /** Serialized bytes of every document the page will receive. */
18
- dataBytes: number;
19
- }
20
- export interface CheckContext {
21
- limits: ArtifactLimits;
22
- allowlist: ArtifactAllowlist;
23
- }
24
- interface Findings {
25
- errors: ArtifactIssue[];
26
- warnings: ArtifactIssue[];
27
- }
28
- /** Every static finding for a page's source. */
29
- export declare function checkView(input: ViewCheckInput, context: CheckContext): Findings;
30
- export interface DocumentCheck {
31
- /** The stored form: script-safe JSON. Absent when the document is refused. */
32
- text?: string;
33
- bytes: number;
34
- error?: ArtifactIssue;
35
- }
36
- /** Check one document's name and value, and serialize it the way it is stored. */
37
- export declare function checkDocument(name: string, value: unknown, limits: ArtifactLimits): DocumentCheck;
38
- /** The collective document bounds: how many, and how large together. */
39
- export declare function checkDocumentTotals(live: number, totalBytes: number, limits: ArtifactLimits): ArtifactIssue | undefined;
40
- /** Sort findings by position, cap errors at 20, and report what was cut. */
41
- export declare function finish(findings: Findings): ArtifactValidation;
42
- export interface ValidateArtifactInput {
43
- kind: ArtifactKind;
44
- source: string;
45
- /** Sample documents, as the page would receive them. */
46
- documents?: Record<string, unknown>;
47
- /** The title a Markdown page renders with. */
48
- title?: string;
49
- }
50
- export interface ValidateArtifactOptions {
51
- limits?: Partial<ArtifactLimits>;
52
- allowlist?: Partial<ArtifactAllowlist>;
53
- }
54
- /**
55
- * Validate a page and its documents without saving anything: the same static
56
- * checks every artifact write runs. `ok` is exactly "no errors"; warnings are
57
- * advice.
58
- */
59
- export declare function validateArtifact(input: ValidateArtifactInput, options?: ValidateArtifactOptions): ArtifactValidation;
60
- /** `validateArtifact` against an already-resolved context. */
61
- export declare function validateWithContext(input: ValidateArtifactInput, context: CheckContext): ArtifactValidation;
62
- export {};