@superbee/core 0.2.0-pre.17 → 0.2.0-pre.19

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 (202) hide show
  1. package/README.md +515 -1
  2. package/dist/blob-journal.d.ts +187 -2
  3. package/dist/blob-journal.d.ts.map +1 -1
  4. package/dist/blob-journal.js +377 -5
  5. package/dist/blob-journal.js.map +1 -1
  6. package/dist/body-replace-guards.d.ts +50 -0
  7. package/dist/body-replace-guards.d.ts.map +1 -0
  8. package/dist/body-replace-guards.js +158 -0
  9. package/dist/body-replace-guards.js.map +1 -0
  10. package/dist/builtin-recipes/content.d.ts +93 -0
  11. package/dist/builtin-recipes/content.d.ts.map +1 -0
  12. package/dist/builtin-recipes/content.js +288 -0
  13. package/dist/builtin-recipes/content.js.map +1 -0
  14. package/dist/builtin-recipes.d.ts +10 -0
  15. package/dist/builtin-recipes.d.ts.map +1 -0
  16. package/dist/builtin-recipes.js +97 -0
  17. package/dist/builtin-recipes.js.map +1 -0
  18. package/dist/code-point-order.d.ts +8 -0
  19. package/dist/code-point-order.d.ts.map +1 -0
  20. package/dist/code-point-order.js +20 -0
  21. package/dist/code-point-order.js.map +1 -0
  22. package/dist/connectors.d.ts +223 -0
  23. package/dist/connectors.d.ts.map +1 -0
  24. package/dist/connectors.js +1143 -0
  25. package/dist/connectors.js.map +1 -0
  26. package/dist/document-field-actions.d.ts +18 -0
  27. package/dist/document-field-actions.d.ts.map +1 -1
  28. package/dist/document-field-actions.js +91 -29
  29. package/dist/document-field-actions.js.map +1 -1
  30. package/dist/document-mutation.d.ts +7 -9
  31. package/dist/document-mutation.d.ts.map +1 -1
  32. package/dist/document-mutation.js +16 -16
  33. package/dist/document-mutation.js.map +1 -1
  34. package/dist/file-journaled-backend.d.ts +31 -5
  35. package/dist/file-journaled-backend.d.ts.map +1 -1
  36. package/dist/file-journaled-backend.js +131 -118
  37. package/dist/file-journaled-backend.js.map +1 -1
  38. package/dist/hosted-client/blob-delivery.d.ts +6 -0
  39. package/dist/hosted-client/blob-delivery.d.ts.map +1 -1
  40. package/dist/hosted-client/blob-delivery.js +23 -1
  41. package/dist/hosted-client/blob-delivery.js.map +1 -1
  42. package/dist/hosted-client/blob-write.d.ts +386 -0
  43. package/dist/hosted-client/blob-write.d.ts.map +1 -0
  44. package/dist/hosted-client/blob-write.js +770 -0
  45. package/dist/hosted-client/blob-write.js.map +1 -0
  46. package/dist/hosted-client/client.d.ts +64 -0
  47. package/dist/hosted-client/client.d.ts.map +1 -1
  48. package/dist/hosted-client/client.js +31 -0
  49. package/dist/hosted-client/client.js.map +1 -1
  50. package/dist/hosted-client/directory.d.ts +46 -0
  51. package/dist/hosted-client/directory.d.ts.map +1 -0
  52. package/dist/hosted-client/directory.js +74 -0
  53. package/dist/hosted-client/directory.js.map +1 -0
  54. package/dist/hosted-client/errors.d.ts +10 -0
  55. package/dist/hosted-client/errors.d.ts.map +1 -1
  56. package/dist/hosted-client/errors.js +13 -0
  57. package/dist/hosted-client/errors.js.map +1 -1
  58. package/dist/hosted-client/inbox.d.ts +320 -0
  59. package/dist/hosted-client/inbox.d.ts.map +1 -0
  60. package/dist/hosted-client/inbox.js +379 -0
  61. package/dist/hosted-client/inbox.js.map +1 -0
  62. package/dist/hosted-client/index.d.ts +11 -4
  63. package/dist/hosted-client/index.d.ts.map +1 -1
  64. package/dist/hosted-client/index.js +11 -4
  65. package/dist/hosted-client/index.js.map +1 -1
  66. package/dist/hosted-client/journal.d.ts +103 -0
  67. package/dist/hosted-client/journal.d.ts.map +1 -0
  68. package/dist/hosted-client/journal.js +464 -0
  69. package/dist/hosted-client/journal.js.map +1 -0
  70. package/dist/hosted-client/node.d.ts +5 -1
  71. package/dist/hosted-client/node.d.ts.map +1 -1
  72. package/dist/hosted-client/node.js +6 -1
  73. package/dist/hosted-client/node.js.map +1 -1
  74. package/dist/hosted-client/write.d.ts +18 -1
  75. package/dist/hosted-client/write.d.ts.map +1 -1
  76. package/dist/hosted-client/write.js +24 -7
  77. package/dist/hosted-client/write.js.map +1 -1
  78. package/dist/hosted-transport/carrier.d.ts +10 -0
  79. package/dist/hosted-transport/carrier.d.ts.map +1 -1
  80. package/dist/hosted-transport/carrier.js +22 -2
  81. package/dist/hosted-transport/carrier.js.map +1 -1
  82. package/dist/index.d.ts +4 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -1
  85. package/dist/index.js.map +1 -1
  86. package/dist/kind-authoring.d.ts +170 -0
  87. package/dist/kind-authoring.d.ts.map +1 -0
  88. package/dist/kind-authoring.js +451 -0
  89. package/dist/kind-authoring.js.map +1 -0
  90. package/dist/kind-conformance-error.d.ts +15 -0
  91. package/dist/kind-conformance-error.d.ts.map +1 -0
  92. package/dist/kind-conformance-error.js +20 -0
  93. package/dist/kind-conformance-error.js.map +1 -0
  94. package/dist/kinds.d.ts +2 -0
  95. package/dist/kinds.d.ts.map +1 -1
  96. package/dist/kinds.js +7 -0
  97. package/dist/kinds.js.map +1 -1
  98. package/dist/recipe-lifecycle/stamp.d.ts +11 -0
  99. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -1
  100. package/dist/recipe-lifecycle/stamp.js +6 -0
  101. package/dist/recipe-lifecycle/stamp.js.map +1 -1
  102. package/dist/record-overlay/apply.d.ts.map +1 -1
  103. package/dist/record-overlay/apply.js +52 -15
  104. package/dist/record-overlay/apply.js.map +1 -1
  105. package/dist/record-overlay/canonical.d.ts +8 -0
  106. package/dist/record-overlay/canonical.d.ts.map +1 -1
  107. package/dist/record-overlay/canonical.js +16 -0
  108. package/dist/record-overlay/canonical.js.map +1 -1
  109. package/dist/record-overlay/errors.d.ts +7 -3
  110. package/dist/record-overlay/errors.d.ts.map +1 -1
  111. package/dist/record-overlay/errors.js +7 -3
  112. package/dist/record-overlay/errors.js.map +1 -1
  113. package/dist/record-overlay/plan.d.ts.map +1 -1
  114. package/dist/record-overlay/plan.js +2 -1
  115. package/dist/record-overlay/plan.js.map +1 -1
  116. package/dist/record-overlay/policy.d.ts +10 -1
  117. package/dist/record-overlay/policy.d.ts.map +1 -1
  118. package/dist/record-overlay/policy.js +33 -14
  119. package/dist/record-overlay/policy.js.map +1 -1
  120. package/dist/record-overlay/types.d.ts +5 -0
  121. package/dist/record-overlay/types.d.ts.map +1 -1
  122. package/dist/search/contract.d.ts +151 -0
  123. package/dist/search/contract.d.ts.map +1 -0
  124. package/dist/search/contract.js +78 -0
  125. package/dist/search/contract.js.map +1 -0
  126. package/dist/search/errors.d.ts +30 -0
  127. package/dist/search/errors.d.ts.map +1 -0
  128. package/dist/search/errors.js +50 -0
  129. package/dist/search/errors.js.map +1 -0
  130. package/dist/search/identity.d.ts +12 -0
  131. package/dist/search/identity.d.ts.map +1 -0
  132. package/dist/search/identity.js +90 -0
  133. package/dist/search/identity.js.map +1 -0
  134. package/dist/search/index.d.ts +15 -0
  135. package/dist/search/index.d.ts.map +1 -0
  136. package/dist/search/index.js +14 -0
  137. package/dist/search/index.js.map +1 -0
  138. package/dist/search/memory-source.d.ts +25 -0
  139. package/dist/search/memory-source.d.ts.map +1 -0
  140. package/dist/search/memory-source.js +230 -0
  141. package/dist/search/memory-source.js.map +1 -0
  142. package/dist/search/rank.d.ts +34 -0
  143. package/dist/search/rank.d.ts.map +1 -0
  144. package/dist/search/rank.js +129 -0
  145. package/dist/search/rank.js.map +1 -0
  146. package/dist/search/row-text.d.ts +38 -0
  147. package/dist/search/row-text.d.ts.map +1 -0
  148. package/dist/search/row-text.js +88 -0
  149. package/dist/search/row-text.js.map +1 -0
  150. package/dist/search/search.d.ts +28 -0
  151. package/dist/search/search.d.ts.map +1 -0
  152. package/dist/search/search.js +240 -0
  153. package/dist/search/search.js.map +1 -0
  154. package/dist/search/source.d.ts +67 -0
  155. package/dist/search/source.d.ts.map +1 -0
  156. package/dist/search/source.js +2 -0
  157. package/dist/search/source.js.map +1 -0
  158. package/dist/search/text.d.ts +47 -0
  159. package/dist/search/text.d.ts.map +1 -0
  160. package/dist/search/text.js +148 -0
  161. package/dist/search/text.js.map +1 -0
  162. package/dist/source-engine/guard.d.ts +82 -0
  163. package/dist/source-engine/guard.d.ts.map +1 -0
  164. package/dist/source-engine/guard.js +396 -0
  165. package/dist/source-engine/guard.js.map +1 -0
  166. package/dist/source-engine/index.d.ts +24 -0
  167. package/dist/source-engine/index.d.ts.map +1 -0
  168. package/dist/source-engine/index.js +20 -0
  169. package/dist/source-engine/index.js.map +1 -0
  170. package/dist/source-engine/machine-state.d.ts +74 -0
  171. package/dist/source-engine/machine-state.d.ts.map +1 -0
  172. package/dist/source-engine/machine-state.js +48 -0
  173. package/dist/source-engine/machine-state.js.map +1 -0
  174. package/dist/source-engine/observe.d.ts +18 -0
  175. package/dist/source-engine/observe.d.ts.map +1 -0
  176. package/dist/source-engine/observe.js +598 -0
  177. package/dist/source-engine/observe.js.map +1 -0
  178. package/dist/source-engine/robots.d.ts +53 -0
  179. package/dist/source-engine/robots.d.ts.map +1 -0
  180. package/dist/source-engine/robots.js +158 -0
  181. package/dist/source-engine/robots.js.map +1 -0
  182. package/dist/source-engine/types.d.ts +285 -0
  183. package/dist/source-engine/types.d.ts.map +1 -0
  184. package/dist/source-engine/types.js +2 -0
  185. package/dist/source-engine/types.js.map +1 -0
  186. package/dist/source-harness/conformance.d.ts +16 -0
  187. package/dist/source-harness/conformance.d.ts.map +1 -0
  188. package/dist/source-harness/conformance.js +265 -0
  189. package/dist/source-harness/conformance.js.map +1 -0
  190. package/dist/source-harness/fixture.d.ts +95 -0
  191. package/dist/source-harness/fixture.d.ts.map +1 -0
  192. package/dist/source-harness/fixture.js +261 -0
  193. package/dist/source-harness/fixture.js.map +1 -0
  194. package/dist/source-harness/index.d.ts +22 -0
  195. package/dist/source-harness/index.d.ts.map +1 -0
  196. package/dist/source-harness/index.js +19 -0
  197. package/dist/source-harness/index.js.map +1 -0
  198. package/dist/source-harness/peer.d.ts +74 -0
  199. package/dist/source-harness/peer.d.ts.map +1 -0
  200. package/dist/source-harness/peer.js +106 -0
  201. package/dist/source-harness/peer.js.map +1 -0
  202. package/package.json +25 -1
@@ -0,0 +1,97 @@
1
+ // Built-in recipes are an acquisition adapter: they materialize the same RecipeFile[] shape an
2
+ // external source supplies, then delegate all interpretation to parseRecipeFiles.
3
+ import { kindConventionDoc } from "./kinds.js";
4
+ import { stringifyDoc } from "./frontmatter.js";
5
+ import { parseRecipeFiles } from "./recipes.js";
6
+ import { CONTEXT_NOTE_KIND, CONTEXT_NOTE_SEED_BODY_LOGICAL, CONTEXT_NOTES_SUMMARY, RECIPE_DESC_BODY, TASK_KIND, TASK_SEED_BODY, WORK_TRACKING_SUMMARY, WORK_TRACKING_DESC_BODY, ROADMAP_KIND, ROADMAP_SEED_BODY, ROADMAP_ITEM_KIND, ROADMAP_ITEM_SEED_BODY, ROADMAP_SUMMARY, ROADMAP_DESC_BODY, } from "./builtin-recipes/content.js";
7
+ /** Used only to call the shared serializer; built-in source bytes discard it before parsing. */
8
+ const PLACEHOLDER_TIMESTAMP = "1970-01-01T00:00:00.000Z";
9
+ function unstampedConvention(kind, body) {
10
+ const doc = kindConventionDoc(kind, body, PLACEHOLDER_TIMESTAMP);
11
+ const { timestamp: _timestamp, ...frontmatter } = doc.frontmatter;
12
+ return { ...doc, frontmatter };
13
+ }
14
+ function buildContextNotesFiles() {
15
+ const conv = unstampedConvention(CONTEXT_NOTE_KIND, CONTEXT_NOTE_SEED_BODY_LOGICAL);
16
+ return [
17
+ {
18
+ path: "recipe.md",
19
+ bytes: stringifyDoc({
20
+ type: "Recipe",
21
+ id: "context-notes",
22
+ title: "Context Notes",
23
+ version: "1",
24
+ summary: CONTEXT_NOTES_SUMMARY,
25
+ offer: "give agents persistent memory between sessions",
26
+ }, RECIPE_DESC_BODY),
27
+ },
28
+ { path: "conventions/context-note.md", bytes: stringifyDoc(conv.frontmatter, conv.body) },
29
+ ];
30
+ }
31
+ function buildWorkTrackingFiles() {
32
+ const conv = unstampedConvention(TASK_KIND, TASK_SEED_BODY);
33
+ return [
34
+ {
35
+ path: "recipe.md",
36
+ bytes: stringifyDoc({
37
+ type: "Recipe",
38
+ id: "work-tracking",
39
+ title: "Work Tracking",
40
+ version: "1",
41
+ summary: WORK_TRACKING_SUMMARY,
42
+ offer: "set up a shared task list for this project",
43
+ }, WORK_TRACKING_DESC_BODY),
44
+ },
45
+ { path: "conventions/task.md", bytes: stringifyDoc(conv.frontmatter, conv.body) },
46
+ ];
47
+ }
48
+ function buildRoadmapFiles() {
49
+ const roadmap = unstampedConvention(ROADMAP_KIND, ROADMAP_SEED_BODY);
50
+ const item = unstampedConvention(ROADMAP_ITEM_KIND, ROADMAP_ITEM_SEED_BODY);
51
+ return [
52
+ {
53
+ path: "recipe.md",
54
+ bytes: stringifyDoc({
55
+ type: "Recipe",
56
+ id: "roadmap",
57
+ title: "Roadmap",
58
+ version: "1",
59
+ summary: ROADMAP_SUMMARY,
60
+ offer: "map out where the project is going",
61
+ }, ROADMAP_DESC_BODY),
62
+ },
63
+ { path: "conventions/roadmap.md", bytes: stringifyDoc(roadmap.frontmatter, roadmap.body) },
64
+ { path: "conventions/roadmap-item.md", bytes: stringifyDoc(item.frontmatter, item.body) },
65
+ ];
66
+ }
67
+ const BUILTIN_FILES = {
68
+ "context-notes": buildContextNotesFiles(),
69
+ "work-tracking": buildWorkTrackingFiles(),
70
+ roadmap: buildRoadmapFiles(),
71
+ };
72
+ export function builtinNames() {
73
+ return Object.keys(BUILTIN_FILES);
74
+ }
75
+ /** Resolve a built-in name only. Acquisition and filesystem routing belong to the caller. */
76
+ export function loadBuiltinRecipe(name) {
77
+ const files = BUILTIN_FILES[name];
78
+ return files && Object.hasOwn(BUILTIN_FILES, name)
79
+ ? parseRecipeFiles(files, `builtin:${name}`, { okfVersion: "0.2" })
80
+ : null;
81
+ }
82
+ /** Detached source bytes, for consumers that need a recipe package rather than its parsed form. */
83
+ export function builtinRecipeFiles(name) {
84
+ return Object.hasOwn(BUILTIN_FILES, name) ? structuredClone(BUILTIN_FILES[name]) : undefined;
85
+ }
86
+ /** Synchronous builtin resolution for render-path consumers (offers) that must stay pure. */
87
+ export function resolveBuiltinSync(name) {
88
+ const files = builtinRecipeFiles(name);
89
+ if (!files)
90
+ throw new Error(`resolveBuiltinSync: no built-in recipe named '${name}'`);
91
+ const result = parseRecipeFiles(files, `builtin:${name}`, { okfVersion: "0.2" });
92
+ if (!result.ok)
93
+ throw new Error(`resolveBuiltinSync: built-in '${name}' failed to parse: ${result.error.message}`);
94
+ return result.recipe;
95
+ }
96
+ export { CONTEXT_NOTE_KIND, CONTEXT_NOTE_SEED_BODY_LOGICAL, CONTEXT_NOTE_SEED_BODY, CONTEXT_NOTES_SUMMARY, RECIPE_DESC_BODY, TASK_KIND, TASK_SEED_BODY, WORK_TRACKING_SUMMARY, WORK_TRACKING_DESC_BODY, ROADMAP_KIND, ROADMAP_SEED_BODY, ROADMAP_ITEM_KIND, ROADMAP_ITEM_SEED_BODY, ROADMAP_SUMMARY, ROADMAP_DESC_BODY } from "./builtin-recipes/content.js";
97
+ //# sourceMappingURL=builtin-recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-recipes.js","sourceRoot":"","sources":["../src/builtin-recipes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The one string order for lists Superbee treats as sets (a declared `string-list` or
3
+ * `https-url-list` a connector owns): Unicode code point order. JavaScript's default `sort()`
4
+ * orders UTF-16 code units, which puts an astral character (an emoji, common in labels) before
5
+ * U+E000 to U+FFFF. A lone surrogate orders by its own value. Storage-neutral.
6
+ */
7
+ export declare function compareCodePoints(a: string, b: string): number;
8
+ //# sourceMappingURL=code-point-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-point-order.d.ts","sourceRoot":"","sources":["../src/code-point-order.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAW9D"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The one string order for lists Superbee treats as sets (a declared `string-list` or
3
+ * `https-url-list` a connector owns): Unicode code point order. JavaScript's default `sort()`
4
+ * orders UTF-16 code units, which puts an astral character (an emoji, common in labels) before
5
+ * U+E000 to U+FFFF. A lone surrogate orders by its own value. Storage-neutral.
6
+ */
7
+ export function compareCodePoints(a, b) {
8
+ let i = 0;
9
+ let j = 0;
10
+ while (i < a.length && j < b.length) {
11
+ const x = a.codePointAt(i);
12
+ const y = b.codePointAt(j);
13
+ if (x !== y)
14
+ return x < y ? -1 : 1;
15
+ i += x > 0xffff ? 2 : 1;
16
+ j += y > 0xffff ? 2 : 1;
17
+ }
18
+ return i < a.length ? 1 : j < b.length ? -1 : 0;
19
+ }
20
+ //# sourceMappingURL=code-point-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-point-order.js","sourceRoot":"","sources":["../src/code-point-order.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAS,EAAE,CAAS;IACpD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,223 @@
1
+ import { type KindConvention, type KindRegistry } from "./kinds.js";
2
+ import type { Finding, OverlayPolicy, RecordChange } from "./record-overlay/types.js";
3
+ import type { ConceptId, Frontmatter, OkfDocument } from "./types.js";
4
+ import type { ValidationWarning } from "./validation.js";
5
+ export declare const CONNECTOR_TYPE = "Connector";
6
+ export declare const CONNECTORS_PREFIX = "connectors/";
7
+ /** The normalization rules of {@link connectorPinDigest}; bumped whenever a default or sort rule changes. */
8
+ export declare const CONNECTOR_PIN_RULES = 1;
9
+ /**
10
+ * Credential providers: provider key to the exact hostnames a `token` or `oauth2` credential may be
11
+ * sent to. A document names a row; it never states a host. Each row is added in its own reviewed
12
+ * change, verified against the vendor's primary documentation. The pin records the hosts a row
13
+ * resolves to, so adding a host to an existing row changes the pin of every Connection on that
14
+ * provider, which then needs approving again.
15
+ */
16
+ export declare const AUTH_PROVIDERS: Readonly<Record<string, readonly string[]>>;
17
+ /** The accepted keys of every closed block. The shape check and the pin digest read only this table. */
18
+ export declare const CONNECTOR_KEYS: Readonly<{
19
+ auth: readonly string[];
20
+ source: readonly string[];
21
+ identity: readonly string[];
22
+ mapping: readonly string[];
23
+ action: readonly string[];
24
+ input: readonly string[];
25
+ event: readonly string[];
26
+ signature: readonly string[];
27
+ }>;
28
+ export type ConnectorBlock = keyof typeof CONNECTOR_KEYS;
29
+ export declare const CONNECTOR_ERROR_CODES: readonly ["CONNECTOR_MALFORMED", "CONNECTOR_UNKNOWN_KEY", "CONNECTOR_AUTH_INVALID", "CONNECTOR_SECRET_PRESENT", "CONNECTOR_DOMAIN_INVALID", "CONNECTOR_DUPLICATE", "CONNECTOR_PROFILE_INVALID", "CONNECTOR_TARGET_KIND_INVALID", "CONNECTOR_MODE_UNSUPPORTED", "CONNECTOR_IDENTITY_UNSTABLE", "CONNECTOR_FIELD_INVALID", "CONNECTOR_FIELD_NEVER_OWNED", "CONNECTOR_FIELD_UNDECLARED", "CONNECTOR_VALUES_INVALID", "CONNECTOR_LIST_FIELD_UNSUPPORTED", "CONNECTOR_ACTION_INVALID", "CONNECTOR_EVENT_INVALID"];
30
+ export type ConnectorErrorCode = (typeof CONNECTOR_ERROR_CODES)[number];
31
+ /** One refusal; `path` is a JSON pointer into the frontmatter (empty for the whole document). */
32
+ export interface ConnectorError {
33
+ code: ConnectorErrorCode;
34
+ path: string;
35
+ message: string;
36
+ }
37
+ export type ConnectorAuthKind = "none" | "token" | "github-app" | "oauth2" | "signed-webhook";
38
+ export interface ConnectorAuth {
39
+ kind: ConnectorAuthKind;
40
+ /** `token` and `oauth2`: an {@link AUTH_PROVIDERS} row. */
41
+ provider?: string;
42
+ /** `github-app`: permission name to access. */
43
+ permissions?: Record<string, "read" | "write">;
44
+ /** `signed-webhook`. */
45
+ scheme?: "hmac-sha256";
46
+ }
47
+ export interface ConnectorMapping {
48
+ /** A dotted record path. */
49
+ from: string;
50
+ /** Native value (as a string) to target value. */
51
+ values?: Record<string, string>;
52
+ /** Present exactly when `values` is: what a native outside the table does. */
53
+ unmapped?: "keep" | "refuse";
54
+ }
55
+ export interface ConnectorSource {
56
+ name: string;
57
+ profile: string;
58
+ target_kind: string;
59
+ mode: "overlay";
60
+ identity: {
61
+ resource: string;
62
+ id: string;
63
+ };
64
+ /** Target field to mapping; the keys are the fields a Source Feed may own. */
65
+ fields: Record<string, ConnectorMapping>;
66
+ completeness: "complete" | "partial";
67
+ }
68
+ export interface ConnectorInput {
69
+ type: "string" | "text" | "integer" | "boolean";
70
+ required: boolean;
71
+ values?: string[];
72
+ }
73
+ export interface ConnectorAction {
74
+ name: string;
75
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
76
+ host: string;
77
+ input: Record<string, ConnectorInput>;
78
+ confirm: "always" | "never";
79
+ }
80
+ export interface ConnectorEvent {
81
+ name: string;
82
+ signature: {
83
+ scheme: "hmac-sha256";
84
+ header: string;
85
+ };
86
+ references: string[];
87
+ }
88
+ export interface Connector {
89
+ id: ConceptId;
90
+ title: string;
91
+ description?: string;
92
+ version?: string;
93
+ auth: ConnectorAuth;
94
+ domains: string[];
95
+ sources: ConnectorSource[];
96
+ actions: ConnectorAction[];
97
+ events: ConnectorEvent[];
98
+ }
99
+ export type ConnectorParseResult = {
100
+ ok: true;
101
+ connector: Connector;
102
+ warnings: ValidationWarning[];
103
+ } | {
104
+ ok: false;
105
+ errors: ConnectorError[];
106
+ };
107
+ /** The hosts a credential of this kind may be sent to: a table row or a fixed set, never document text. */
108
+ export declare function credentialHosts(auth: Pick<ConnectorAuth, "kind" | "provider">): readonly string[];
109
+ /**
110
+ * Parse one Connector document, returning every refusal found. With `ctx.kinds`, a source whose
111
+ * target Kind is in the registry is also checked against it; one whose Kind is absent is left to
112
+ * {@link checkConnectorAgainstKinds} with a warning. A secret-shaped key or value, or a YAML alias,
113
+ * refuses the document alone, so no other refusal can echo the one or expand the other.
114
+ */
115
+ export declare function parseConnectorDoc(doc: OkfDocument, ctx?: {
116
+ kinds?: KindRegistry;
117
+ }): ConnectorParseResult;
118
+ /** The Kind rules over a bundle's registry; a source whose target Kind is not declared is refused. */
119
+ export declare function checkConnectorAgainstKinds(connector: Connector, kinds: KindRegistry): ConnectorError[];
120
+ /**
121
+ * The digest a Connection records at enable time: every key {@link CONNECTOR_KEYS} accepts, with
122
+ * defaults filled and order-free lists sorted, plus the credential hosts core resolves the auth kind
123
+ * to, under the recipe stamp's canonical JSON. Blind to
124
+ * `title`, `description`, `version`, the body, `x_recipe` and unknown top-level keys.
125
+ */
126
+ export declare function connectorPinDigest(connector: Connector): string;
127
+ export interface BoundFeed {
128
+ /** The overlay policy, with the source's target Kind and completeness. */
129
+ policy: OverlayPolicy;
130
+ source: ConnectorSource;
131
+ kind: KindConvention;
132
+ parameters: Record<string, string>;
133
+ /** Equal to the feed's `url` byte for byte; identity only, never a fetch target. */
134
+ resource: string;
135
+ }
136
+ /**
137
+ * Bind a Source Feed to one source of a Connector. The feed chooses only among the resources the
138
+ * identity template admits, within the mapping keys, under the source's own completeness and
139
+ * profile. Every refusal is `POLICY_INVALID` naming the feed and the key. `okfVersion` is the content
140
+ * bundle's edition; absent means v0.1, as an undeclared edition does, and an owned list field needs
141
+ * v0.2 because only field actions write lists.
142
+ */
143
+ export declare function bindSourceFeed(connector: Connector, feed: {
144
+ id: ConceptId;
145
+ frontmatter: Frontmatter;
146
+ }, kinds: KindRegistry, options?: {
147
+ okfVersion?: "0.1" | "0.2";
148
+ }): BoundFeed;
149
+ export type MappingDiagnosticCode = "VALUE_UNMAPPED" | "VALUE_NOT_SCALAR" | "VALUE_NOT_LIST" | "VALUE_MISSING" | "RECORD_REFUSED" | "IDENTITY_MISSING" | "IDENTITY_INVALID";
150
+ /** Why a record's value was not written; `native` is the provider value, `external_id` the record's. */
151
+ export interface MappingDiagnostic {
152
+ code: MappingDiagnosticCode;
153
+ /** The target field, or `identity`. */
154
+ field: string;
155
+ /** The record path read. */
156
+ from: string;
157
+ native: unknown;
158
+ external_id: string | null;
159
+ }
160
+ export type MappedRecord = {
161
+ kind: "mapped";
162
+ external_id: string;
163
+ /** Values to write. */
164
+ fields: Record<string, unknown>;
165
+ /** Not observed this time: carried from the last accepted value, never removed. */
166
+ unobserved: string[];
167
+ /** Optional fields the provider says are empty: removed. */
168
+ cleared: string[];
169
+ diagnostics: MappingDiagnostic[];
170
+ } | {
171
+ kind: "refused";
172
+ present: boolean;
173
+ external_id: string | null;
174
+ diagnostics: MappingDiagnostic[];
175
+ };
176
+ export type IdentityResult = {
177
+ ok: true;
178
+ resource: string;
179
+ id: string;
180
+ } | {
181
+ ok: false;
182
+ diagnostic: MappingDiagnostic;
183
+ };
184
+ /** The record's identity: the bound resource and the id template rendered over the record. */
185
+ export declare function renderIdentity(source: ConnectorSource, bound: Pick<BoundFeed, "resource">, value: unknown): IdentityResult;
186
+ /**
187
+ * Map one normalized record onto the target Kind's fields. An absent path leaves the field
188
+ * unobserved. An empty value (`null` or blank text) clears an optional field and leaves a
189
+ * required one, or `title`, unobserved with `VALUE_MISSING`. A list or mapping is unobserved with
190
+ * `VALUE_NOT_SCALAR`. A native outside a values table is looked up as its string (a number as
191
+ * `String(n)`, a boolean as `true` or `false`) and then follows `unmapped`: `keep` leaves the field
192
+ * unobserved with `VALUE_UNMAPPED`; `refuse` refuses the whole record, which still counts as present.
193
+ * A record whose identity cannot be rendered is refused and not present.
194
+ *
195
+ * A field the Kind declares as `string-list` or `https-url-list` is always a list: a list of
196
+ * nonblank text is written deduplicated and in code point order, and `null` is `[]` (empty, so the
197
+ * owned list empties). An empty list on a required field is `VALUE_MISSING`; anything else, a
198
+ * member that is not nonblank text included, is unobserved with `VALUE_NOT_LIST`.
199
+ */
200
+ export declare function mapRecord(source: ConnectorSource, value: unknown, kind: Pick<KindConvention, "fields">): MappedRecord;
201
+ /**
202
+ * The record-overlay change between the last accepted `after` of this record (carried values
203
+ * included; null for a first observation) and a new mapping. An unobserved field is carried from
204
+ * `previous` and left out of `changed_fields`, so no write and no removal is planned for it; a
205
+ * cleared field is absent from `after`. Only the source's mapping keys can change.
206
+ */
207
+ export declare function changeBetween(previous: Readonly<Record<string, unknown>> | null, next: Extract<MappedRecord, {
208
+ kind: "mapped";
209
+ }>, meta: {
210
+ external_id: string;
211
+ change_kind: string;
212
+ }): RecordChange;
213
+ /**
214
+ * Findings for `planFindings`, so one problem across many records raises one Signal: an unknown
215
+ * value one per source, field, code and native value; a value of the wrong shape or an empty one
216
+ * one per source, field, code and shape; identity gaps one per source. `facts` hold the code, field
217
+ * and the clipped native value or the shape, never a record id, so a dismissed finding stays
218
+ * dismissed until they change; the summary names the count and a sample of record ids.
219
+ */
220
+ export declare function findingsFor(diagnostics: readonly MappingDiagnostic[], scope: {
221
+ source: string;
222
+ }): Finding[];
223
+ //# sourceMappingURL=connectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"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"}