@lucern/sdk 0.2.0-alpha.4 → 0.2.0-alpha.6

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 (190) hide show
  1. package/README.md +31 -0
  2. package/dist/.generated +2 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.js +3 -8894
  5. package/dist/lib/platform/auth/credentials.d.ts +5 -0
  6. package/dist/lib/platform/auth/credentials.js +40 -0
  7. package/dist/lib/platform/sdk/adminClient.d.ts +404 -0
  8. package/dist/lib/platform/sdk/adminClient.js +384 -0
  9. package/dist/lib/platform/sdk/answersClient.d.ts +16 -0
  10. package/dist/lib/platform/sdk/answersClient.js +21 -0
  11. package/dist/{packages/sdk/src → lib/platform/sdk}/audiencesClient.d.ts +6 -0
  12. package/dist/lib/platform/sdk/audiencesClient.js +111 -0
  13. package/dist/{packages/sdk/src → lib/platform/sdk}/auditClient.d.ts +3 -0
  14. package/dist/lib/platform/sdk/auditClient.js +21 -0
  15. package/dist/lib/platform/sdk/beliefsClient.d.ts +157 -0
  16. package/dist/lib/platform/sdk/beliefsClient.js +124 -0
  17. package/dist/{packages/sdk/src → lib/platform/sdk}/client.d.ts +957 -146
  18. package/dist/lib/platform/sdk/client.js +1831 -0
  19. package/dist/lib/platform/sdk/contextClient.d.ts +21 -0
  20. package/dist/lib/platform/sdk/contextClient.js +86 -0
  21. package/dist/lib/platform/sdk/contextFacade.d.ts +10 -0
  22. package/dist/lib/platform/sdk/contextFacade.js +10 -0
  23. package/dist/{lucern/packages/domain-context/src/context-pack-compiler.d.ts → lib/platform/sdk/contextPackCompiler.d.ts} +2 -3
  24. package/dist/lib/platform/sdk/contextPackCompiler.js +534 -0
  25. package/dist/lib/platform/sdk/contextTypes.d.ts +133 -0
  26. package/dist/lib/platform/sdk/contextTypes.js +1 -0
  27. package/dist/{packages/sdk/src → lib/platform/sdk}/controlObjectOwnership.d.ts +15 -0
  28. package/dist/lib/platform/sdk/controlObjectOwnership.js +220 -0
  29. package/dist/{packages/sdk/src → lib/platform/sdk}/coreClient.d.ts +19 -0
  30. package/dist/lib/platform/sdk/coreClient.js +366 -0
  31. package/dist/{packages/sdk/src → lib/platform/sdk}/customTools.d.ts +21 -3
  32. package/dist/lib/platform/sdk/customTools.js +247 -0
  33. package/dist/{packages/sdk/src → lib/platform/sdk}/decisionsClient.d.ts +9 -0
  34. package/dist/lib/platform/sdk/decisionsClient.js +129 -0
  35. package/dist/lib/platform/sdk/domainContext.d.ts +1 -0
  36. package/dist/lib/platform/sdk/domainContext.js +1 -0
  37. package/dist/lib/platform/sdk/events.d.ts +176 -0
  38. package/dist/lib/platform/sdk/events.js +261 -0
  39. package/dist/lib/platform/sdk/eventsCore.d.ts +13 -0
  40. package/dist/lib/platform/sdk/eventsCore.js +13 -0
  41. package/dist/lib/platform/sdk/gatewayFacades.d.ts +586 -0
  42. package/dist/lib/platform/sdk/gatewayFacades.js +845 -0
  43. package/dist/{packages/sdk/src → lib/platform/sdk}/graphClient.d.ts +75 -0
  44. package/dist/lib/platform/sdk/graphClient.js +235 -0
  45. package/dist/{packages/sdk/src → lib/platform/sdk}/harnessClient.d.ts +90 -1
  46. package/dist/lib/platform/sdk/harnessClient.js +219 -0
  47. package/dist/{packages/sdk/src → lib/platform/sdk}/identityClient.d.ts +45 -15
  48. package/dist/lib/platform/sdk/identityClient.js +131 -0
  49. package/dist/{packages/sdk/src → lib/platform/sdk}/index.d.ts +24 -3
  50. package/dist/lib/platform/sdk/index.js +49 -0
  51. package/dist/{packages/sdk/src → lib/platform/sdk}/learningClient.d.ts +3 -0
  52. package/dist/lib/platform/sdk/learningClient.js +53 -0
  53. package/dist/{packages/sdk/src → lib/platform/sdk}/mcpParityClient.d.ts +1 -0
  54. package/dist/lib/platform/sdk/mcpParityClient.js +196 -0
  55. package/dist/{packages/sdk/src → lib/platform/sdk}/mcpParitySurface.d.ts +2 -0
  56. package/dist/lib/platform/sdk/mcpParitySurface.js +57 -0
  57. package/dist/{packages/sdk/src → lib/platform/sdk}/ontologyClient.d.ts +16 -0
  58. package/dist/lib/platform/sdk/ontologyClient.js +161 -0
  59. package/dist/lib/platform/sdk/packRuntime.d.ts +1 -0
  60. package/dist/lib/platform/sdk/packRuntime.js +1 -0
  61. package/dist/{packages/sdk/src → lib/platform/sdk}/packsClient.d.ts +25 -0
  62. package/dist/lib/platform/sdk/packsClient.js +157 -0
  63. package/dist/{packages/sdk/src → lib/platform/sdk}/policyClient.d.ts +90 -1
  64. package/dist/lib/platform/sdk/policyClient.js +277 -0
  65. package/dist/lib/platform/sdk/promptCatalog.d.ts +1 -0
  66. package/dist/lib/platform/sdk/promptCatalog.js +1 -0
  67. package/dist/{packages/sdk/src → lib/platform/sdk}/reportsClient.d.ts +3 -0
  68. package/dist/lib/platform/sdk/reportsClient.js +64 -0
  69. package/dist/{packages/sdk/src → lib/platform/sdk}/schemaClient.d.ts +5 -0
  70. package/dist/lib/platform/sdk/schemaClient.js +71 -0
  71. package/dist/{packages/sdk/src → lib/platform/sdk}/sdkSurface.d.ts +1 -0
  72. package/dist/lib/platform/sdk/sdkSurface.js +140 -0
  73. package/dist/{packages/sdk/src → lib/platform/sdk}/topicsClient.d.ts +33 -0
  74. package/dist/lib/platform/sdk/topicsClient.js +118 -0
  75. package/dist/{packages/sdk/src → lib/platform/sdk}/types.d.ts +224 -2
  76. package/dist/lib/platform/sdk/types.js +1 -0
  77. package/dist/lib/platform/sdk/version.js +2 -0
  78. package/dist/{packages/sdk/src → lib/platform/sdk}/workflowClient.d.ts +63 -2
  79. package/dist/lib/platform/sdk/workflowClient.js +366 -0
  80. package/dist/lucern/contracts/src/api-enums.contract.d.ts +58 -0
  81. package/dist/lucern/contracts/src/api-enums.contract.js +147 -0
  82. package/dist/lucern/contracts/src/auth-context.contract.d.ts +8 -0
  83. package/dist/lucern/contracts/src/auth-context.contract.js +8 -0
  84. package/dist/lucern/contracts/src/auth-session.contract.d.ts +5 -50
  85. package/dist/lucern/contracts/src/auth-session.contract.js +8 -0
  86. package/dist/lucern/contracts/src/auth.contract.d.ts +88 -0
  87. package/dist/lucern/contracts/src/auth.contract.js +57 -0
  88. package/dist/lucern/contracts/src/context-pack.contract.js +169 -0
  89. package/dist/lucern/contracts/src/convex-admin.contract.d.ts +5 -0
  90. package/dist/lucern/contracts/src/convex-admin.contract.js +1 -0
  91. package/dist/lucern/contracts/src/events-types.contract.d.ts +8 -0
  92. package/dist/lucern/contracts/src/events-types.contract.js +8 -0
  93. package/dist/lucern/{packages/events/src/types.d.ts → contracts/src/events.contract.d.ts} +25 -0
  94. package/dist/lucern/contracts/src/events.contract.js +159 -0
  95. package/dist/lucern/contracts/src/gateway.contract.d.ts +74 -0
  96. package/dist/lucern/contracts/src/gateway.contract.js +19 -0
  97. package/dist/lucern/contracts/src/ids.contract.js +24 -0
  98. package/dist/lucern/contracts/src/index.d.ts +29 -0
  99. package/dist/lucern/contracts/src/index.js +29 -0
  100. package/dist/lucern/contracts/src/lens-filter.contract.js +95 -0
  101. package/dist/lucern/contracts/src/lens-workflow.contract.js +54 -0
  102. package/dist/lucern/contracts/src/mcp-tools.contract.js +3281 -0
  103. package/dist/lucern/contracts/src/ontology-matching.contract.d.ts +8 -0
  104. package/dist/lucern/contracts/src/ontology-matching.contract.js +8 -0
  105. package/dist/lucern/contracts/src/prompt.contract.d.ts +24 -0
  106. package/dist/lucern/contracts/src/prompt.contract.js +24 -0
  107. package/dist/lucern/contracts/src/sdk-methods.contract.d.ts +358 -0
  108. package/dist/lucern/contracts/src/sdk-methods.contract.js +19 -0
  109. package/dist/lucern/contracts/src/sdk-tools.contract.d.ts +92 -0
  110. package/dist/lucern/contracts/src/sdk-tools.contract.js +1398 -0
  111. package/dist/lucern/contracts/src/text-matching.contract.js +277 -0
  112. package/dist/lucern/contracts/src/topic-scope.contract.d.ts +8 -0
  113. package/dist/lucern/contracts/src/topic-scope.contract.js +8 -0
  114. package/dist/lucern/contracts/src/workflow-runtime.contract.js +257 -0
  115. package/dist/realtime-refs.d.ts +1 -0
  116. package/dist/realtime-refs.js +1 -0
  117. package/dist/realtime.d.ts +1 -0
  118. package/dist/realtime.js +1 -0
  119. package/package.json +18 -5
  120. package/dist/index.js.map +0 -1
  121. package/dist/lucern/mcp-server/src/context-pack-policy.d.ts +0 -119
  122. package/dist/lucern/mcp-server/src/context-pack-schema.d.ts +0 -18
  123. package/dist/lucern/modules/graph-primitives/src/ontology-matching.d.ts +0 -78
  124. package/dist/lucern/packages/client-core/src/beliefs.d.ts +0 -30
  125. package/dist/lucern/packages/client-core/src/context.d.ts +0 -29
  126. package/dist/lucern/packages/client-core/src/contradictions.d.ts +0 -11
  127. package/dist/lucern/packages/client-core/src/edges.d.ts +0 -11
  128. package/dist/lucern/packages/client-core/src/events.d.ts +0 -9
  129. package/dist/lucern/packages/client-core/src/evidence.d.ts +0 -21
  130. package/dist/lucern/packages/client-core/src/graph.d.ts +0 -17
  131. package/dist/lucern/packages/client-core/src/identity.d.ts +0 -7
  132. package/dist/lucern/packages/client-core/src/ontologies.d.ts +0 -13
  133. package/dist/lucern/packages/client-core/src/questions.d.ts +0 -39
  134. package/dist/lucern/packages/client-core/src/search.d.ts +0 -7
  135. package/dist/lucern/packages/client-core/src/tasks.d.ts +0 -13
  136. package/dist/lucern/packages/client-core/src/topics.d.ts +0 -17
  137. package/dist/lucern/packages/client-core/src/webhooks.d.ts +0 -35
  138. package/dist/lucern/packages/client-core/src/worktrees.d.ts +0 -17
  139. package/dist/lucern/packages/domain-beliefs/src/beliefs.d.ts +0 -283
  140. package/dist/lucern/packages/domain-beliefs/src/index.d.ts +0 -1
  141. package/dist/lucern/packages/domain-context/src/compile.d.ts +0 -11
  142. package/dist/lucern/packages/domain-context/src/index.d.ts +0 -4
  143. package/dist/lucern/packages/domain-context/src/ports.d.ts +0 -58
  144. package/dist/lucern/packages/domain-context/src/public-types.d.ts +0 -1
  145. package/dist/lucern/packages/domain-edges/src/contradictions.d.ts +0 -59
  146. package/dist/lucern/packages/domain-edges/src/edges.d.ts +0 -91
  147. package/dist/lucern/packages/domain-edges/src/index.d.ts +0 -2
  148. package/dist/lucern/packages/domain-evidence/src/evidence.d.ts +0 -115
  149. package/dist/lucern/packages/domain-evidence/src/index.d.ts +0 -1
  150. package/dist/lucern/packages/domain-graph/src/graph.d.ts +0 -150
  151. package/dist/lucern/packages/domain-identity/src/index.d.ts +0 -1
  152. package/dist/lucern/packages/domain-identity/src/whoami.d.ts +0 -13
  153. package/dist/lucern/packages/domain-ontologies/src/ontologies.d.ts +0 -123
  154. package/dist/lucern/packages/domain-questions/src/index.d.ts +0 -1
  155. package/dist/lucern/packages/domain-questions/src/questions.d.ts +0 -147
  156. package/dist/lucern/packages/domain-search/src/search.d.ts +0 -97
  157. package/dist/lucern/packages/domain-tasks/src/index.d.ts +0 -1
  158. package/dist/lucern/packages/domain-tasks/src/tasks.d.ts +0 -102
  159. package/dist/lucern/packages/domain-topics/src/index.d.ts +0 -1
  160. package/dist/lucern/packages/domain-topics/src/topics.d.ts +0 -147
  161. package/dist/lucern/packages/domain-worktrees/src/index.d.ts +0 -1
  162. package/dist/lucern/packages/domain-worktrees/src/worktrees.d.ts +0 -185
  163. package/dist/lucern/packages/events/src/index.d.ts +0 -4
  164. package/dist/lucern/packages/events/src/matching.d.ts +0 -3
  165. package/dist/lucern/packages/events/src/outbox.d.ts +0 -15
  166. package/dist/lucern/packages/events/src/webhooks.d.ts +0 -9
  167. package/dist/lucern/packages/sdk-typescript/src/facade/beliefs.d.ts +0 -15
  168. package/dist/lucern/packages/sdk-typescript/src/facade/context.d.ts +0 -12
  169. package/dist/lucern/packages/sdk-typescript/src/facade/contradictions.d.ts +0 -7
  170. package/dist/lucern/packages/sdk-typescript/src/facade/edges.d.ts +0 -7
  171. package/dist/lucern/packages/sdk-typescript/src/facade/events.d.ts +0 -6
  172. package/dist/lucern/packages/sdk-typescript/src/facade/evidence.d.ts +0 -21
  173. package/dist/lucern/packages/sdk-typescript/src/facade/graph.d.ts +0 -10
  174. package/dist/lucern/packages/sdk-typescript/src/facade/identity.d.ts +0 -5
  175. package/dist/lucern/packages/sdk-typescript/src/facade/ontologies.d.ts +0 -8
  176. package/dist/lucern/packages/sdk-typescript/src/facade/questions.d.ts +0 -39
  177. package/dist/lucern/packages/sdk-typescript/src/facade/search.d.ts +0 -5
  178. package/dist/lucern/packages/sdk-typescript/src/facade/tasks.d.ts +0 -8
  179. package/dist/lucern/packages/sdk-typescript/src/facade/topics.d.ts +0 -10
  180. package/dist/lucern/packages/sdk-typescript/src/facade/webhooks.d.ts +0 -16
  181. package/dist/lucern/packages/sdk-typescript/src/facade/worktrees.d.ts +0 -10
  182. package/dist/lucern/packages/sdk-typescript/src/index.d.ts +0 -28
  183. package/dist/packages/sdk/src/adminClient.d.ts +0 -89
  184. package/dist/packages/sdk/src/answersClient.d.ts +0 -5
  185. package/dist/packages/sdk/src/beliefsClient.d.ts +0 -52
  186. package/dist/packages/sdk/src/contextClient.d.ts +0 -9
  187. package/dist/packages/sdk/src/contracts/api-enums.contract.d.ts +0 -79
  188. /package/dist/{packages/sdk/src → lib/platform/sdk}/version.d.ts +0 -0
  189. /package/dist/lucern/{packages/client-core/src/ids.d.ts → contracts/src/ids.contract.d.ts} +0 -0
  190. /package/dist/lucern/{modules/graph-primitives/src/text-matching.d.ts → contracts/src/text-matching.contract.d.ts} +0 -0
@@ -0,0 +1,133 @@
1
+ export type ContextRankingProfile = "baseline_v1" | "hybrid_v1" | "weighted_v1";
2
+ export type ContextCompilationMode = "standard" | "delta";
3
+ export type ContextPackSectionKey = "invariants" | "activeBeliefs" | "openQuestions" | "recentEvidence" | "contradictions";
4
+ export type RankingWeightVector = {
5
+ query: number;
6
+ recency: number;
7
+ confidence?: number;
8
+ beliefType?: number;
9
+ priority?: number;
10
+ severity?: number;
11
+ };
12
+ export type PackWeightOverride = {
13
+ section: ContextPackSectionKey;
14
+ weights: Partial<RankingWeightVector>;
15
+ };
16
+ export type CompileContextInput = {
17
+ query?: string;
18
+ budget?: number;
19
+ ranking?: ContextRankingProfile;
20
+ limit?: number;
21
+ maxDepth?: number;
22
+ includeEntities?: boolean;
23
+ mode?: ContextCompilationMode;
24
+ includeFailures?: boolean;
25
+ worktreeId?: string;
26
+ sessionId?: string;
27
+ packWeightOverrides?: PackWeightOverride[];
28
+ tokenBudget?: number;
29
+ rankingProfile?: ContextRankingProfile;
30
+ };
31
+ export type PublicContextBelief = {
32
+ beliefId: string;
33
+ text: string;
34
+ confidence: number | null;
35
+ beliefType?: string | null;
36
+ status?: string;
37
+ updatedAt?: number | null;
38
+ score: number;
39
+ justification?: string;
40
+ };
41
+ export type PublicContextQuestion = {
42
+ questionId: string;
43
+ text: string;
44
+ status: string;
45
+ priority: string;
46
+ updatedAt?: number | null;
47
+ score: number;
48
+ justification?: string;
49
+ };
50
+ export type PublicContextEvidence = {
51
+ evidenceId: string;
52
+ text: string;
53
+ sourceUrl?: string | null;
54
+ kind: string;
55
+ createdAt?: number | null;
56
+ score: number;
57
+ justification?: string;
58
+ };
59
+ export type PublicContextContradiction = {
60
+ contradictionId: string;
61
+ severity: string;
62
+ status: string;
63
+ description: string;
64
+ score: number;
65
+ justification?: string;
66
+ };
67
+ export type PublicContextEntity = {
68
+ entityId: string;
69
+ entityType: string;
70
+ title: string;
71
+ text?: string;
72
+ connectedBeliefCount: number;
73
+ connectedEvidenceCount: number;
74
+ score: number;
75
+ metadata?: Record<string, unknown>;
76
+ };
77
+ export type PublicContextInjectionPolicy = {
78
+ tokenBudget: number;
79
+ estimatedTokens: number;
80
+ sectionBudgets: Record<string, number>;
81
+ sectionUsage: Record<string, number>;
82
+ selected: Record<string, string[]>;
83
+ excludedItems?: Array<{
84
+ id: string;
85
+ section: string;
86
+ reason: "budget_exceeded" | "anti_repetition" | "below_threshold";
87
+ score: number;
88
+ }>;
89
+ };
90
+ export type PublicCompiledContext = {
91
+ schemaVersion: string;
92
+ topicId: string;
93
+ topicName: string;
94
+ scopedTopicIds: string[];
95
+ generatedAt: number;
96
+ ranking: ContextRankingProfile;
97
+ summary: Record<string, unknown>;
98
+ invariants: PublicContextBelief[];
99
+ activeBeliefs: PublicContextBelief[];
100
+ openQuestions: PublicContextQuestion[];
101
+ recentEvidence: PublicContextEvidence[];
102
+ contradictions: PublicContextContradiction[];
103
+ relatedEntities?: PublicContextEntity[];
104
+ contextNarrative: string[];
105
+ injectionPolicy: PublicContextInjectionPolicy;
106
+ diagnostics: Record<string, unknown>;
107
+ compilationMode?: string;
108
+ failureContext?: {
109
+ failures: Array<{
110
+ attemptId: string;
111
+ approach: string;
112
+ outcome: string;
113
+ recordedAt: number;
114
+ score: number;
115
+ }>;
116
+ suppressedIds: string[];
117
+ };
118
+ deltaReport?: {
119
+ changedItems: Array<{
120
+ id: string;
121
+ section: string;
122
+ changeType: string;
123
+ summary: string;
124
+ }>;
125
+ verificationObligations: Array<{
126
+ description: string;
127
+ source: string;
128
+ severity: "critical" | "high" | "medium" | "low";
129
+ }>;
130
+ referencePoint: string;
131
+ };
132
+ appliedWeightOverrides?: unknown[];
133
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,13 +1,24 @@
1
+ /** All recognized control object kinds in the ownership model. */
1
2
  export declare const CONTROL_OBJECT_KINDS: readonly ["tenant", "workspace", "principal", "tool", "pack", "ontology", "belief", "policy_rule"];
3
+ /** A kind of control object (tenant, workspace, principal, tool, etc.). */
2
4
  export type ControlObjectKind = (typeof CONTROL_OBJECT_KINDS)[number];
5
+ /** Canonical ownership scopes: platform, tenant, workspace, or resource. */
3
6
  export declare const CONTROL_OBJECT_OWNER_SCOPES: readonly ["platform", "tenant", "workspace", "resource"];
7
+ /** The scope level that canonically owns a control object. */
4
8
  export type ControlObjectOwnerScope = (typeof CONTROL_OBJECT_OWNER_SCOPES)[number];
9
+ /** UI surfaces authorized to edit control objects. */
5
10
  export declare const CONTROL_OBJECT_EDIT_SURFACES: readonly ["platform_admin", "tenant_admin", "workspace_admin", "graph_worktree"];
11
+ /** A UI surface authorized to mutate a control object (platform admin, tenant admin, etc.). */
6
12
  export type ControlObjectEditSurface = (typeof CONTROL_OBJECT_EDIT_SURFACES)[number];
13
+ /** Rules governing how control object configuration flows through the scope hierarchy. */
7
14
  export declare const CONTROL_OBJECT_INHERITANCE_RULES: readonly ["none", "platform_seed_to_tenant", "tenant_default_to_workspace", "workspace_narrowing_only", "pack_overlay_to_tenant", "topic_lineage_to_resource"];
15
+ /** How a control object's configuration propagates through scope hierarchy. */
8
16
  export type ControlObjectInheritanceRule = (typeof CONTROL_OBJECT_INHERITANCE_RULES)[number];
17
+ /** Scope of impact when a control object is modified. */
9
18
  export declare const CONTROL_OBJECT_BLAST_RADII: readonly ["platform", "tenant", "workspace", "resource"];
19
+ /** The furthest scope impacted by a mutation to a control object. */
10
20
  export type ControlObjectBlastRadius = (typeof CONTROL_OBJECT_BLAST_RADII)[number];
21
+ /** A single row in the ownership matrix describing who owns, edits, and inherits a control object. */
11
22
  export type ControlObjectOwnershipCase = {
12
23
  caseKey: string;
13
24
  caseLabel: string;
@@ -17,7 +28,9 @@ export type ControlObjectOwnershipCase = {
17
28
  inheritanceRule: ControlObjectInheritanceRule;
18
29
  blastRadius: ControlObjectBlastRadius;
19
30
  };
31
+ /** Full ownership matrix keyed by control object kind. */
20
32
  export type ControlObjectOwnershipMatrix = Record<ControlObjectKind, readonly ControlObjectOwnershipCase[]>;
33
+ /** Versioned ownership contract bundling all enums, the matrix, and flattened rows. */
21
34
  export type ControlObjectOwnershipContract = {
22
35
  version: "1.0.0";
23
36
  kinds: readonly ControlObjectKind[];
@@ -28,6 +41,7 @@ export type ControlObjectOwnershipContract = {
28
41
  matrix: ControlObjectOwnershipMatrix;
29
42
  rows: readonly ControlObjectOwnershipCase[];
30
43
  };
44
+ /** Static ownership matrix mapping each control object kind to its ownership cases. */
31
45
  export declare const CONTROL_OBJECT_OWNERSHIP_MATRIX: {
32
46
  readonly tenant: readonly [{
33
47
  readonly caseKey: "platform-record";
@@ -150,6 +164,7 @@ export declare const CONTROL_OBJECT_OWNERSHIP_MATRIX: {
150
164
  readonly blastRadius: "workspace";
151
165
  }];
152
166
  };
167
+ /** Flattened array of all ownership cases across all control object kinds. */
153
168
  export declare const CONTROL_OBJECT_OWNERSHIP_ROWS: readonly ControlObjectOwnershipCase[];
154
169
  /** The canonical ownership contract exposed by the SDK. */
155
170
  export declare const CONTROL_OBJECT_OWNERSHIP_CONTRACT: {
@@ -0,0 +1,220 @@
1
+ /** All recognized control object kinds in the ownership model. */
2
+ export const CONTROL_OBJECT_KINDS = [
3
+ "tenant",
4
+ "workspace",
5
+ "principal",
6
+ "tool",
7
+ "pack",
8
+ "ontology",
9
+ "belief",
10
+ "policy_rule",
11
+ ];
12
+ /** Canonical ownership scopes: platform, tenant, workspace, or resource. */
13
+ export const CONTROL_OBJECT_OWNER_SCOPES = [
14
+ "platform",
15
+ "tenant",
16
+ "workspace",
17
+ "resource",
18
+ ];
19
+ /** UI surfaces authorized to edit control objects. */
20
+ export const CONTROL_OBJECT_EDIT_SURFACES = [
21
+ "platform_admin",
22
+ "tenant_admin",
23
+ "workspace_admin",
24
+ "graph_worktree",
25
+ ];
26
+ /** Rules governing how control object configuration flows through the scope hierarchy. */
27
+ export const CONTROL_OBJECT_INHERITANCE_RULES = [
28
+ "none",
29
+ "platform_seed_to_tenant",
30
+ "tenant_default_to_workspace",
31
+ "workspace_narrowing_only",
32
+ "pack_overlay_to_tenant",
33
+ "topic_lineage_to_resource",
34
+ ];
35
+ /** Scope of impact when a control object is modified. */
36
+ export const CONTROL_OBJECT_BLAST_RADII = [
37
+ "platform",
38
+ "tenant",
39
+ "workspace",
40
+ "resource",
41
+ ];
42
+ function defineCases(cases) {
43
+ return cases;
44
+ }
45
+ /** Static ownership matrix mapping each control object kind to its ownership cases. */
46
+ export const CONTROL_OBJECT_OWNERSHIP_MATRIX = {
47
+ tenant: defineCases([
48
+ {
49
+ caseKey: "platform-record",
50
+ caseLabel: "Platform Record",
51
+ kind: "tenant",
52
+ canonicalOwnerScope: "platform",
53
+ editSurface: "platform_admin",
54
+ inheritanceRule: "none",
55
+ blastRadius: "tenant",
56
+ },
57
+ ]),
58
+ workspace: defineCases([
59
+ {
60
+ caseKey: "tenant-workspace",
61
+ caseLabel: "Tenant Workspace",
62
+ kind: "workspace",
63
+ canonicalOwnerScope: "tenant",
64
+ editSurface: "tenant_admin",
65
+ inheritanceRule: "tenant_default_to_workspace",
66
+ blastRadius: "workspace",
67
+ },
68
+ ]),
69
+ principal: defineCases([
70
+ {
71
+ caseKey: "tenant-principal",
72
+ caseLabel: "Tenant Principal",
73
+ kind: "principal",
74
+ canonicalOwnerScope: "tenant",
75
+ editSurface: "tenant_admin",
76
+ inheritanceRule: "workspace_narrowing_only",
77
+ blastRadius: "resource",
78
+ },
79
+ ]),
80
+ tool: defineCases([
81
+ {
82
+ caseKey: "platform-core",
83
+ caseLabel: "Platform Core",
84
+ kind: "tool",
85
+ canonicalOwnerScope: "platform",
86
+ editSurface: "platform_admin",
87
+ inheritanceRule: "platform_seed_to_tenant",
88
+ blastRadius: "platform",
89
+ },
90
+ {
91
+ caseKey: "tenant-custom",
92
+ caseLabel: "Tenant Custom",
93
+ kind: "tool",
94
+ canonicalOwnerScope: "tenant",
95
+ editSurface: "tenant_admin",
96
+ inheritanceRule: "tenant_default_to_workspace",
97
+ blastRadius: "tenant",
98
+ },
99
+ ]),
100
+ pack: defineCases([
101
+ {
102
+ caseKey: "platform-definition",
103
+ caseLabel: "Platform Definition",
104
+ kind: "pack",
105
+ canonicalOwnerScope: "platform",
106
+ editSurface: "platform_admin",
107
+ inheritanceRule: "platform_seed_to_tenant",
108
+ blastRadius: "platform",
109
+ },
110
+ {
111
+ caseKey: "tenant-installation",
112
+ caseLabel: "Tenant Installation",
113
+ kind: "pack",
114
+ canonicalOwnerScope: "tenant",
115
+ editSurface: "tenant_admin",
116
+ inheritanceRule: "platform_seed_to_tenant",
117
+ blastRadius: "tenant",
118
+ },
119
+ ]),
120
+ ontology: defineCases([
121
+ {
122
+ caseKey: "platform-base",
123
+ caseLabel: "Platform Base",
124
+ kind: "ontology",
125
+ canonicalOwnerScope: "platform",
126
+ editSurface: "platform_admin",
127
+ inheritanceRule: "platform_seed_to_tenant",
128
+ blastRadius: "platform",
129
+ },
130
+ {
131
+ caseKey: "pack-overlay",
132
+ caseLabel: "Pack Overlay",
133
+ kind: "ontology",
134
+ canonicalOwnerScope: "platform",
135
+ editSurface: "platform_admin",
136
+ inheritanceRule: "pack_overlay_to_tenant",
137
+ blastRadius: "platform",
138
+ },
139
+ {
140
+ caseKey: "tenant-extension",
141
+ caseLabel: "Tenant Extension",
142
+ kind: "ontology",
143
+ canonicalOwnerScope: "tenant",
144
+ editSurface: "tenant_admin",
145
+ inheritanceRule: "topic_lineage_to_resource",
146
+ blastRadius: "tenant",
147
+ },
148
+ ]),
149
+ belief: defineCases([
150
+ {
151
+ caseKey: "topic-resource",
152
+ caseLabel: "Topic Resource",
153
+ kind: "belief",
154
+ canonicalOwnerScope: "resource",
155
+ editSurface: "graph_worktree",
156
+ inheritanceRule: "topic_lineage_to_resource",
157
+ blastRadius: "resource",
158
+ },
159
+ ]),
160
+ policy_rule: defineCases([
161
+ {
162
+ caseKey: "platform-baseline",
163
+ caseLabel: "Platform Baseline",
164
+ kind: "policy_rule",
165
+ canonicalOwnerScope: "platform",
166
+ editSurface: "platform_admin",
167
+ inheritanceRule: "platform_seed_to_tenant",
168
+ blastRadius: "platform",
169
+ },
170
+ {
171
+ caseKey: "tenant-bundle",
172
+ caseLabel: "Tenant Bundle",
173
+ kind: "policy_rule",
174
+ canonicalOwnerScope: "tenant",
175
+ editSurface: "tenant_admin",
176
+ inheritanceRule: "tenant_default_to_workspace",
177
+ blastRadius: "tenant",
178
+ },
179
+ {
180
+ caseKey: "workspace-override",
181
+ caseLabel: "Workspace Override",
182
+ kind: "policy_rule",
183
+ canonicalOwnerScope: "workspace",
184
+ editSurface: "workspace_admin",
185
+ inheritanceRule: "none",
186
+ blastRadius: "workspace",
187
+ },
188
+ ]),
189
+ };
190
+ function flattenOwnershipMatrix(matrix) {
191
+ return CONTROL_OBJECT_KINDS.flatMap((kind) => [...matrix[kind]]);
192
+ }
193
+ /** Flattened array of all ownership cases across all control object kinds. */
194
+ export const CONTROL_OBJECT_OWNERSHIP_ROWS = Object.freeze(flattenOwnershipMatrix(CONTROL_OBJECT_OWNERSHIP_MATRIX));
195
+ /** The canonical ownership contract exposed by the SDK. */
196
+ export const CONTROL_OBJECT_OWNERSHIP_CONTRACT = {
197
+ version: "1.0.0",
198
+ kinds: CONTROL_OBJECT_KINDS,
199
+ ownerScopes: CONTROL_OBJECT_OWNER_SCOPES,
200
+ editSurfaces: CONTROL_OBJECT_EDIT_SURFACES,
201
+ inheritanceRules: CONTROL_OBJECT_INHERITANCE_RULES,
202
+ blastRadii: CONTROL_OBJECT_BLAST_RADII,
203
+ matrix: CONTROL_OBJECT_OWNERSHIP_MATRIX,
204
+ rows: CONTROL_OBJECT_OWNERSHIP_ROWS,
205
+ };
206
+ /**
207
+ * List ownership cases for one control-object kind or the full matrix.
208
+ */
209
+ export function listControlObjectOwnershipCases(kind) {
210
+ if (!kind) {
211
+ return CONTROL_OBJECT_OWNERSHIP_ROWS;
212
+ }
213
+ return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind];
214
+ }
215
+ /**
216
+ * Get a specific ownership case by kind and case key.
217
+ */
218
+ export function getControlObjectOwnershipCase(kind, caseKey) {
219
+ return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind].find((ownershipCase) => ownershipCase.caseKey === caseKey);
220
+ }
@@ -1,8 +1,10 @@
1
1
  import type { JsonObject, JsonValue } from "./types";
2
+ /** Tenant and workspace identifiers used to scope gateway requests. */
2
3
  export type GatewayScope = {
3
4
  tenantId?: string;
4
5
  workspaceId?: string;
5
6
  };
7
+ /** Successful response envelope from the platform gateway with correlation metadata. */
6
8
  export type PlatformGatewaySuccess<T> = {
7
9
  success: true;
8
10
  data: T;
@@ -10,6 +12,7 @@ export type PlatformGatewaySuccess<T> = {
10
12
  policyTraceId: string | null;
11
13
  idempotentReplay: boolean;
12
14
  };
15
+ /** Failed response envelope with structured error codes and optional invariant references. */
13
16
  export type PlatformGatewayFailure = {
14
17
  success: false;
15
18
  /**
@@ -33,7 +36,14 @@ export type PlatformGatewayFailure = {
33
36
  correlationId: string;
34
37
  policyTraceId: string | null;
35
38
  };
39
+ /** Discriminated union of success and failure gateway responses. */
36
40
  export type PlatformGatewayEnvelope<T> = PlatformGatewaySuccess<T> | PlatformGatewayFailure;
41
+ /**
42
+ * Structured error thrown when a platform API request fails.
43
+ *
44
+ * Includes HTTP status, machine-readable error code, optional invariant
45
+ * reference, and actionable suggestions for common failure modes.
46
+ */
37
47
  export declare class LucernApiError extends Error {
38
48
  readonly code: string;
39
49
  readonly status: number;
@@ -55,8 +65,10 @@ export declare class LucernApiError extends Error {
55
65
  policyTraceId?: string | null;
56
66
  });
57
67
  }
68
+ /** Supported HTTP methods for gateway requests. */
58
69
  export type GatewayHttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
59
70
  type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
71
+ /** Context passed to the `onRequest` hook before each gateway request attempt. */
60
72
  export type GatewayRequestHookContext = {
61
73
  requestId: string;
62
74
  attempt: number;
@@ -68,6 +80,7 @@ export type GatewayRequestHookContext = {
68
80
  body?: string;
69
81
  timeoutMs: number;
70
82
  };
83
+ /** Context passed to the `onResponse` hook after each gateway request attempt (including retries and failures). */
71
84
  export type GatewayResponseHookContext = GatewayRequestHookContext & {
72
85
  durationMs: number;
73
86
  status?: number;
@@ -79,6 +92,12 @@ export type GatewayResponseHookContext = GatewayRequestHookContext & {
79
92
  retryAfterMs?: number | null;
80
93
  willRetry: boolean;
81
94
  };
95
+ /**
96
+ * Low-level transport configuration for the platform gateway client.
97
+ *
98
+ * Most developers should use {@link createLucernClient} instead, which wraps
99
+ * this config with higher-level conveniences like `apiKey` and `environment`.
100
+ */
82
101
  export type GatewayClientConfig = {
83
102
  baseUrl?: string;
84
103
  fetchImpl?: FetchLike;