@lucern/contracts 0.3.0-alpha.17 → 0.3.0-alpha.3
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/CHANGELOG.md +0 -10
- package/dist/api-enums.contract.d.ts +3 -5
- package/dist/api-enums.contract.js +12 -14
- package/dist/api-enums.contract.js.map +1 -1
- package/dist/auth-context.contract.js +2 -14
- package/dist/auth-context.contract.js.map +1 -1
- package/dist/auth-session.contract.js +2 -14
- package/dist/auth-session.contract.js.map +1 -1
- package/dist/auth.contract.d.ts +1 -1
- package/dist/auth.contract.js +2 -14
- package/dist/auth.contract.js.map +1 -1
- package/dist/component-boundary.contract.d.ts +1 -1
- package/dist/component-boundary.contract.js +26 -46
- package/dist/component-boundary.contract.js.map +1 -1
- package/dist/context-pack.contract.d.ts +3 -5
- package/dist/context-pack.contract.js.map +1 -1
- package/dist/{defineTable-t1wr5wgn.d.ts → defineTable-CBQ03FXl.d.ts} +1 -1
- package/dist/{dsl-DVPthQGY.d.ts → dsl-BgpoVOVQ.d.ts} +2 -2
- package/dist/dsl.d.ts +2 -2
- package/dist/dsl.js +4 -1
- package/dist/dsl.js.map +1 -1
- package/dist/function-registry/beliefs.d.ts +51 -64
- package/dist/function-registry/beliefs.js +57 -817
- package/dist/function-registry/beliefs.js.map +1 -1
- package/dist/function-registry/coding.d.ts +6 -15
- package/dist/function-registry/coding.js +43 -866
- package/dist/function-registry/coding.js.map +1 -1
- package/dist/function-registry/context.d.ts +16 -22
- package/dist/function-registry/context.js +46 -805
- package/dist/function-registry/context.js.map +1 -1
- package/dist/function-registry/contracts.d.ts +3 -9
- package/dist/function-registry/contracts.js +39 -770
- package/dist/function-registry/contracts.js.map +1 -1
- package/dist/function-registry/coordination.d.ts +9 -21
- package/dist/function-registry/coordination.js +39 -770
- package/dist/function-registry/coordination.js.map +1 -1
- package/dist/function-registry/edges.d.ts +2 -167
- package/dist/function-registry/edges.js +71 -978
- package/dist/function-registry/edges.js.map +1 -1
- package/dist/function-registry/evidence.d.ts +41 -52
- package/dist/function-registry/evidence.js +62 -826
- package/dist/function-registry/evidence.js.map +1 -1
- package/dist/function-registry/graph.d.ts +66 -162
- package/dist/function-registry/graph.js +46 -886
- package/dist/function-registry/graph.js.map +1 -1
- package/dist/function-registry/helpers.d.ts +4 -7
- package/dist/function-registry/helpers.js +40 -771
- package/dist/function-registry/helpers.js.map +1 -1
- package/dist/function-registry/identity.d.ts +16 -62
- package/dist/function-registry/identity.js +45 -793
- package/dist/function-registry/identity.js.map +1 -1
- package/dist/function-registry/index.d.ts +3 -5
- package/dist/function-registry/index.js +43 -777
- package/dist/function-registry/index.js.map +1 -1
- package/dist/function-registry/judgments.d.ts +11 -16
- package/dist/function-registry/judgments.js +42 -782
- package/dist/function-registry/judgments.js.map +1 -1
- package/dist/function-registry/legacy.d.ts +1 -5
- package/dist/function-registry/legacy.js +39 -770
- package/dist/function-registry/legacy.js.map +1 -1
- package/dist/function-registry/lenses.d.ts +21 -28
- package/dist/function-registry/lenses.js +42 -793
- package/dist/function-registry/lenses.js.map +1 -1
- package/dist/function-registry/manifest.d.ts +6 -6
- package/dist/function-registry/manifest.js +2 -19
- package/dist/function-registry/manifest.js.map +1 -1
- package/dist/function-registry/ontologies.d.ts +56 -70
- package/dist/function-registry/ontologies.js +45 -788
- package/dist/function-registry/ontologies.js.map +1 -1
- package/dist/function-registry/pipeline.d.ts +16 -22
- package/dist/function-registry/pipeline.js +42 -779
- package/dist/function-registry/pipeline.js.map +1 -1
- package/dist/function-registry/questions.d.ts +61 -76
- package/dist/function-registry/questions.js +52 -869
- package/dist/function-registry/questions.js.map +1 -1
- package/dist/function-registry/tasks.d.ts +21 -28
- package/dist/function-registry/tasks.js +48 -845
- package/dist/function-registry/tasks.js.map +1 -1
- package/dist/function-registry/topics.d.ts +26 -114
- package/dist/function-registry/topics.js +43 -852
- package/dist/function-registry/topics.js.map +1 -1
- package/dist/function-registry/types.d.ts +3 -7
- package/dist/function-registry/worktrees.d.ts +51 -104
- package/dist/function-registry/worktrees.js +51 -925
- package/dist/function-registry/worktrees.js.map +1 -1
- package/dist/gateway.contract.d.ts +0 -5
- package/dist/gateway.contract.js.map +1 -1
- package/dist/generated/convexSchemas.d.ts +3 -3
- package/dist/generated/convexSchemas.js +18 -38
- package/dist/generated/convexSchemas.js.map +1 -1
- package/dist/generated/schema-manifest.json +114 -1221
- package/dist/generated/tableOwnership.d.ts +28 -48
- package/dist/generated/tableOwnership.js +26 -66
- package/dist/generated/tableOwnership.js.map +1 -1
- package/dist/generated/tier-expectations.json +9 -64
- package/dist/graph-types/index.d.ts +1 -5
- package/dist/graph-types/index.js +4 -15
- package/dist/graph-types/index.js.map +1 -1
- package/dist/index-CV-0_VWJ.d.ts +25 -0
- package/dist/index.d.ts +669 -28
- package/dist/index.js +400 -34707
- package/dist/index.js.map +1 -1
- package/dist/lens-filter.contract.js +3 -4
- package/dist/lens-filter.contract.js.map +1 -1
- package/dist/lens-workflow.contract.js +3 -4
- package/dist/lens-workflow.contract.js.map +1 -1
- package/dist/mcp-gateway-boundary.contract.d.ts +3 -23
- package/dist/mcp-gateway-boundary.contract.js +0 -2
- package/dist/mcp-gateway-boundary.contract.js.map +1 -1
- package/dist/schema-helpers/enumValidation.js +5 -2
- package/dist/schema-helpers/enumValidation.js.map +1 -1
- package/dist/schema-helpers/spine/nodes/decision.js +1 -2
- package/dist/schema-helpers/spine/nodes/decision.js.map +1 -1
- package/dist/schema-helpers/spine/tables/epistemicNodes.js +27 -27
- package/dist/schema-helpers/spine/tables/epistemicNodes.js.map +1 -1
- package/dist/schemas/component-table-manifest.d.ts +6 -6
- package/dist/schemas/component-table-manifest.js +2 -2
- package/dist/schemas/component-table-manifest.js.map +1 -1
- package/dist/schemas/enums.d.ts +2 -5
- package/dist/schemas/enums.js +2 -5
- package/dist/schemas/enums.js.map +1 -1
- package/dist/schemas/index.d.ts +3 -3
- package/dist/schemas/index.js +139 -1130
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/manifest.d.ts +948 -2948
- package/dist/schemas/manifest.js +137 -1128
- package/dist/schemas/manifest.js.map +1 -1
- package/dist/schemas/sl-opinion.d.ts +4 -4
- package/dist/schemas/tables/{controlPlane → identity}/agent.d.ts +1 -1
- package/dist/schemas/tables/{controlPlane → identity}/agent.js +3 -3
- package/dist/schemas/tables/identity/agent.js.map +1 -0
- package/dist/schemas/tables/{controlPlane → identity}/epistemic.d.ts +1 -1
- package/dist/schemas/tables/{controlPlane → identity}/epistemic.js +3 -3
- package/dist/schemas/tables/identity/epistemic.js.map +1 -0
- package/dist/schemas/tables/{controlPlane → identity}/model.d.ts +1 -1
- package/dist/schemas/tables/{controlPlane → identity}/model.js +6 -6
- package/dist/schemas/tables/identity/model.js.map +1 -0
- package/dist/schemas/tables/{controlPlane → identity}/platform.d.ts +11 -11
- package/dist/schemas/tables/{controlPlane → identity}/platform.js +18 -18
- package/dist/schemas/tables/identity/platform.js.map +1 -0
- package/dist/schemas/tables/{controlPlane → identity}/project.d.ts +1 -1
- package/dist/schemas/tables/{controlPlane → identity}/project.js +3 -3
- package/dist/schemas/tables/identity/project.js.map +1 -0
- package/dist/schemas/tables/{controlPlane → identity}/user.d.ts +1 -1
- package/dist/schemas/tables/{controlPlane → identity}/user.js +3 -3
- package/dist/schemas/tables/identity/user.js.map +1 -0
- package/dist/schemas/tables/kernel/config.d.ts +1 -1
- package/dist/schemas/tables/kernel/config.js.map +1 -1
- package/dist/schemas/tables/kernel/coordination.d.ts +1 -1
- package/dist/schemas/tables/kernel/coordination.js.map +1 -1
- package/dist/schemas/tables/kernel/decision.d.ts +1 -1
- package/dist/schemas/tables/kernel/decision.js.map +1 -1
- package/dist/schemas/tables/kernel/embedding.d.ts +1 -1
- package/dist/schemas/tables/kernel/embedding.js.map +1 -1
- package/dist/schemas/tables/kernel/epistemic.d.ts +7 -7
- package/dist/schemas/tables/kernel/epistemic.js.map +1 -1
- package/dist/schemas/tables/kernel/idempotency.d.ts +1 -1
- package/dist/schemas/tables/kernel/idempotency.js.map +1 -1
- package/dist/schemas/tables/kernel/infra.d.ts +5 -5
- package/dist/schemas/tables/kernel/infra.js.map +1 -1
- package/dist/schemas/tables/kernel/intelligence.d.ts +11 -11
- package/dist/schemas/tables/kernel/intelligence.js.map +1 -1
- package/dist/schemas/tables/kernel/lens.d.ts +5 -5
- package/dist/schemas/tables/kernel/lens.js.map +1 -1
- package/dist/schemas/tables/kernel/ontology.d.ts +1 -1
- package/dist/schemas/tables/kernel/ontology.js.map +1 -1
- package/dist/schemas/tables/kernel/platform.d.ts +13 -13
- package/dist/schemas/tables/kernel/platform.js.map +1 -1
- package/dist/schemas/tables/kernel/spine.d.ts +4 -5
- package/dist/schemas/tables/kernel/spine.js +2 -6
- package/dist/schemas/tables/kernel/spine.js.map +1 -1
- package/dist/schemas/tables/kernel/task.d.ts +43 -43
- package/dist/schemas/tables/kernel/task.js.map +1 -1
- package/dist/schemas/tables/kernel/topic.d.ts +1 -1
- package/dist/schemas/tables/kernel/topic.js +1 -5
- package/dist/schemas/tables/kernel/topic.js.map +1 -1
- package/dist/schemas/tables/kernel/workflow.d.ts +1 -1
- package/dist/schemas/tables/kernel/workflow.js.map +1 -1
- package/dist/schemas/tables/kernel/worktree.d.ts +55 -55
- package/dist/schemas/tables/kernel/worktree.js.map +1 -1
- package/dist/schemas/tables/mc/identity.d.ts +4 -21
- package/dist/schemas/tables/mc/identity.js +1 -32
- package/dist/schemas/tables/mc/identity.js.map +1 -1
- package/dist/schemas/tables/mc/methodology.d.ts +1 -1
- package/dist/schemas/tables/mc/methodology.js.map +1 -1
- package/dist/schemas/tables/mc/pack.d.ts +21 -21
- package/dist/schemas/tables/mc/pack.js.map +1 -1
- package/dist/schemas/tables/mc/policy.d.ts +2 -2
- package/dist/schemas/tables/mc/policy.js +1 -1
- package/dist/schemas/tables/mc/policy.js.map +1 -1
- package/dist/schemas/tables/mc/registry.d.ts +5 -5
- package/dist/schemas/tables/mc/registry.js.map +1 -1
- package/dist/schemas/tables/mc/runtime.d.ts +3 -109
- package/dist/schemas/tables/mc/runtime.js +104 -330
- package/dist/schemas/tables/mc/runtime.js.map +1 -1
- package/dist/schemas/tables/mc/tenant.d.ts +2 -4
- package/dist/schemas/tables/mc/tenant.js +1 -3
- package/dist/schemas/tables/mc/tenant.js.map +1 -1
- package/dist/schemas/tables/mc/workspace.d.ts +5 -28
- package/dist/schemas/tables/mc/workspace.js +2 -36
- package/dist/schemas/tables/mc/workspace.js.map +1 -1
- package/dist/sdk-methods.contract.d.ts +2 -2
- package/dist/{sdk-tools.contract-CKmSsrZ2.d.ts → sdk-tools.contract-S4ia0TTo.d.ts} +2 -2
- package/dist/sdk-tools.contract.d.ts +2 -2
- package/dist/sdk-tools.contract.js +27 -719
- package/dist/sdk-tools.contract.js.map +1 -1
- package/dist/tenant-client.contract.d.ts +14 -102
- package/dist/tenant-client.contract.js +12 -113
- package/dist/tenant-client.contract.js.map +1 -1
- package/dist/{tool-contracts-C_xvM9q2.d.ts → tool-contracts-C92-9ueT.d.ts} +2 -38
- package/dist/tool-contracts.d.ts +1 -1
- package/dist/tool-contracts.js +28 -720
- package/dist/tool-contracts.js.map +1 -1
- package/package.json +1 -30
- package/dist/component-host-boundary.contract.d.ts +0 -46
- package/dist/component-host-boundary.contract.js +0 -60
- package/dist/component-host-boundary.contract.js.map +0 -1
- package/dist/edge-policy-manifest-Dw5IhT1L.d.ts +0 -133
- package/dist/function-registry/nodes.d.ts +0 -412
- package/dist/function-registry/nodes.js +0 -5354
- package/dist/function-registry/nodes.js.map +0 -1
- package/dist/function-registry-input-audit.d.ts +0 -13
- package/dist/function-registry-input-audit.js +0 -166
- package/dist/function-registry-input-audit.js.map +0 -1
- package/dist/generated/infisicalRuntimeEnv.d.ts +0 -70
- package/dist/generated/infisicalRuntimeEnv.js +0 -27345
- package/dist/generated/infisicalRuntimeEnv.js.map +0 -1
- package/dist/generated/lucernGatewayEnv.d.ts +0 -17
- package/dist/generated/lucernGatewayEnv.js +0 -38
- package/dist/generated/lucernGatewayEnv.js.map +0 -1
- package/dist/generated/lucernWebPublicEnv.d.ts +0 -26
- package/dist/generated/lucernWebPublicEnv.js +0 -32
- package/dist/generated/lucernWebPublicEnv.js.map +0 -1
- package/dist/generated/lucernWebServerEnv.d.ts +0 -33
- package/dist/generated/lucernWebServerEnv.js +0 -51
- package/dist/generated/lucernWebServerEnv.js.map +0 -1
- package/dist/graph-intelligence.contract.d.ts +0 -506
- package/dist/graph-intelligence.contract.js +0 -595
- package/dist/graph-intelligence.contract.js.map +0 -1
- package/dist/index-CM1Pl_vI.d.ts +0 -28
- package/dist/infisical-runtime.contract.d.ts +0 -1889
- package/dist/infisical-runtime.contract.js +0 -3235
- package/dist/infisical-runtime.contract.js.map +0 -1
- package/dist/manifests/edge-policy-manifest.d.ts +0 -2
- package/dist/manifests/edge-policy-manifest.data.d.ts +0 -13
- package/dist/manifests/edge-policy-manifest.data.js +0 -26
- package/dist/manifests/edge-policy-manifest.data.js.map +0 -1
- package/dist/manifests/edge-policy-manifest.js +0 -92
- package/dist/manifests/edge-policy-manifest.js.map +0 -1
- package/dist/manifests/infisical-runtime-manifest.d.ts +0 -1792
- package/dist/manifests/infisical-runtime-manifest.js +0 -3090
- package/dist/manifests/infisical-runtime-manifest.js.map +0 -1
- package/dist/manifests/invariant-manifest.d.ts +0 -65
- package/dist/manifests/invariant-manifest.js +0 -18
- package/dist/manifests/invariant-manifest.js.map +0 -1
- package/dist/manifests/invariants/ast-utils.d.ts +0 -14
- package/dist/manifests/invariants/ast-utils.js +0 -54
- package/dist/manifests/invariants/ast-utils.js.map +0 -1
- package/dist/manifests/invariants/index.d.ts +0 -15
- package/dist/manifests/invariants/index.js +0 -183
- package/dist/manifests/invariants/index.js.map +0 -1
- package/dist/manifests/invariants/inv-1-beliefs-append-only.d.ts +0 -12
- package/dist/manifests/invariants/inv-1-beliefs-append-only.js +0 -94
- package/dist/manifests/invariants/inv-1-beliefs-append-only.js.map +0 -1
- package/dist/manifests/invariants/inv-14-no-silent-transitions.d.ts +0 -12
- package/dist/manifests/invariants/inv-14-no-silent-transitions.js +0 -99
- package/dist/manifests/invariants/inv-14-no-silent-transitions.js.map +0 -1
- package/dist/manifests/invariants/manifest-1-projections-declare-audit.d.ts +0 -12
- package/dist/manifests/invariants/manifest-1-projections-declare-audit.js +0 -42
- package/dist/manifests/invariants/manifest-1-projections-declare-audit.js.map +0 -1
- package/dist/manifests/tenant-client-manifest.d.ts +0 -327
- package/dist/manifests/tenant-client-manifest.js +0 -449
- package/dist/manifests/tenant-client-manifest.js.map +0 -1
- package/dist/permit-principal-projection.contract.d.ts +0 -74
- package/dist/permit-principal-projection.contract.js +0 -167
- package/dist/permit-principal-projection.contract.js.map +0 -1
- package/dist/projections/check-convex-args-shape.d.ts +0 -3
- package/dist/projections/check-convex-args-shape.js +0 -403
- package/dist/projections/check-convex-args-shape.js.map +0 -1
- package/dist/projections/create-evidence.projection.d.ts +0 -176
- package/dist/projections/create-evidence.projection.js +0 -130
- package/dist/projections/create-evidence.projection.js.map +0 -1
- package/dist/projections/index.d.ts +0 -102
- package/dist/projections/index.js +0 -352
- package/dist/projections/index.js.map +0 -1
- package/dist/projections/list-beliefs.projection.d.ts +0 -36
- package/dist/projections/list-beliefs.projection.js +0 -54
- package/dist/projections/list-beliefs.projection.js.map +0 -1
- package/dist/projections/list-tasks.projection.d.ts +0 -44
- package/dist/projections/list-tasks.projection.js +0 -57
- package/dist/projections/list-tasks.projection.js.map +0 -1
- package/dist/projections/modulate-confidence.projection.d.ts +0 -219
- package/dist/projections/modulate-confidence.projection.js +0 -148
- package/dist/projections/modulate-confidence.projection.js.map +0 -1
- package/dist/projections/projection-dsl.d.ts +0 -11
- package/dist/projections/projection-dsl.js +0 -8
- package/dist/projections/projection-dsl.js.map +0 -1
- package/dist/proof-attestation.json +0 -45
- package/dist/schemas/tables/controlPlane/accessControl.d.ts +0 -260
- package/dist/schemas/tables/controlPlane/accessControl.js +0 -658
- package/dist/schemas/tables/controlPlane/accessControl.js.map +0 -1
- package/dist/schemas/tables/controlPlane/agent.js.map +0 -1
- package/dist/schemas/tables/controlPlane/epistemic.js.map +0 -1
- package/dist/schemas/tables/controlPlane/model.js.map +0 -1
- package/dist/schemas/tables/controlPlane/platform.js.map +0 -1
- package/dist/schemas/tables/controlPlane/project.js.map +0 -1
- package/dist/schemas/tables/controlPlane/user.js.map +0 -1
- package/dist/schemas/tables/kernel/events.d.ts +0 -21
- package/dist/schemas/tables/kernel/events.js +0 -43
- package/dist/schemas/tables/kernel/events.js.map +0 -1
- package/dist/tenant-bootstrap-seed.contract.d.ts +0 -1289
- package/dist/tenant-bootstrap-seed.contract.js +0 -764
- package/dist/tenant-bootstrap-seed.contract.js.map +0 -1
- package/dist/tenant-bootstrap-seed.defaults.d.ts +0 -16
- package/dist/tenant-bootstrap-seed.defaults.js +0 -321
- package/dist/tenant-bootstrap-seed.defaults.js.map +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// src/lens-filter.contract.ts
|
|
2
2
|
function isLensFilterCriteria(value) {
|
|
3
|
-
|
|
3
|
+
if (!value || typeof value !== "object") return false;
|
|
4
|
+
const obj = value;
|
|
5
|
+
return typeof obj.version === "number" && typeof obj.kind === "string";
|
|
4
6
|
}
|
|
5
7
|
function isTaxonomyFilterCriteriaV1(value) {
|
|
6
8
|
if (!isLensFilterCriteria(value)) return false;
|
|
@@ -29,9 +31,6 @@ function validateFilterCriteria(value) {
|
|
|
29
31
|
]
|
|
30
32
|
};
|
|
31
33
|
}
|
|
32
|
-
function isRecord(value) {
|
|
33
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
34
|
-
}
|
|
35
34
|
function validateTaxonomyFilterV1(criteria) {
|
|
36
35
|
const errors = [];
|
|
37
36
|
if (!Array.isArray(criteria.entityTypeFilters)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lens-filter.contract.ts"],"names":[],"mappings":";AA4EO,SAAS,qBACd,KAAA,EAC6B;AAC7B,EAAA,
|
|
1
|
+
{"version":3,"sources":["../src/lens-filter.contract.ts"],"names":[],"mappings":"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","file":"lens-filter.contract.js","sourcesContent":["/**\n * Lens Filter Criteria Contract\n *\n * Version-discriminated filter DSL for lenses. Each filter criteria document\n * carries a `version` and `kind` discriminator so future shapes can coexist\n * without schema migrations. The Convex `filterCriteria` field remains v.any()\n * — all type enforcement happens here at the TypeScript contract layer.\n *\n * Forward-compatibility guarantees:\n * - `version` field: new versions add fields, never remove or rename existing ones\n * - `kind` field: new filter kinds (temporal, confidence-range) can be added\n * without touching taxonomy code paths\n * - `entityTypeFilters` array items are open to extension in future versions\n * - Resolution logic switches on `version` + `kind` to select the right resolver\n *\n * @module lucern/contracts/src/lens-filter\n */\n\n// ---------------------------------------------------------------------------\n// V1: Taxonomy Filter — entity type + subtype matching\n// ---------------------------------------------------------------------------\n\n/**\n * A single entity type filter entry. Matches nodes whose `nodeType` equals\n * `entityTypeValue`, optionally further narrowed by subtype membership.\n *\n * V2 will add `propertyMatchers` here for arbitrary JSON Schema facet queries.\n */\nexport type EntityTypeFilterV1 = {\n /** References ontologyVersion.entityTypes[].value, e.g. \"company\" */\n entityTypeValue: string;\n\n /** Optional subtype narrowing. If omitted or empty, all subtypes match. */\n subtypeValues?: string[];\n};\n\n/**\n * Optional scope to restrict which ontology the filter resolves against.\n * If omitted, resolution uses whatever ontology is active in the workspace.\n */\nexport type OntologyScope = {\n /** Restrict to a specific ontology by key, e.g. \"vc-investment\" */\n ontologyKey?: string;\n};\n\n/**\n * Taxonomy filter criteria v1: entity type + subtype matching over ontology.\n */\nexport type TaxonomyFilterCriteriaV1 = {\n version: 1;\n kind: \"taxonomy\";\n entityTypeFilters: EntityTypeFilterV1[];\n ontologyScope?: OntologyScope;\n};\n\n// ---------------------------------------------------------------------------\n// Union: All filter criteria versions and kinds\n// ---------------------------------------------------------------------------\n\n/**\n * Discriminated union of all supported filter criteria.\n * Resolution logic switches on `version` + `kind`.\n *\n * To add a new filter kind:\n * 1. Define a new type (e.g., TemporalFilterCriteriaV1)\n * 2. Add it to this union\n * 3. Add a resolver in taxonomy-filter.ts\n * 4. No schema migration needed — filterCriteria is v.any()\n */\nexport type LensFilterCriteria = TaxonomyFilterCriteriaV1;\n// Future: | TemporalFilterCriteriaV1 | ConfidenceRangeFilterCriteriaV1 | ...\n\n// ---------------------------------------------------------------------------\n// Type guards\n// ---------------------------------------------------------------------------\n\nexport function isLensFilterCriteria(\n value: unknown\n): value is LensFilterCriteria {\n if (!value || typeof value !== \"object\") return false;\n const obj = value as Record<string, unknown>;\n return typeof obj.version === \"number\" && typeof obj.kind === \"string\";\n}\n\nexport function isTaxonomyFilterCriteriaV1(\n value: unknown\n): value is TaxonomyFilterCriteriaV1 {\n if (!isLensFilterCriteria(value)) return false;\n return value.version === 1 && value.kind === \"taxonomy\";\n}\n\n// ---------------------------------------------------------------------------\n// Validation\n// ---------------------------------------------------------------------------\n\nexport type FilterValidationResult =\n | { valid: true }\n | { valid: false; errors: string[] };\n\n/**\n * Validate a filter criteria document at the contract layer.\n * This runs before persisting to Convex.\n */\nexport function validateFilterCriteria(\n value: unknown\n): FilterValidationResult {\n if (value === undefined || value === null) {\n return { valid: true }; // filterCriteria is optional\n }\n\n if (!isLensFilterCriteria(value)) {\n return {\n valid: false,\n errors: [\n 'filterCriteria must have numeric \"version\" and string \"kind\" fields',\n ],\n };\n }\n\n if (isTaxonomyFilterCriteriaV1(value)) {\n return validateTaxonomyFilterV1(value);\n }\n\n // Cast to access properties — TypeScript narrows to `never` when all union\n // members are exhausted, but at runtime unknown version/kind combos are possible.\n const raw = value as { version: number; kind: string };\n return {\n valid: false,\n errors: [\n `Unsupported filter criteria: version=${raw.version}, kind=${raw.kind}`,\n ],\n };\n}\n\nfunction validateTaxonomyFilterV1(\n criteria: TaxonomyFilterCriteriaV1\n): FilterValidationResult {\n const errors: string[] = [];\n\n if (!Array.isArray(criteria.entityTypeFilters)) {\n errors.push(\"entityTypeFilters must be an array\");\n return { valid: false, errors };\n }\n\n if (criteria.entityTypeFilters.length === 0) {\n errors.push(\"entityTypeFilters must contain at least one entry\");\n return { valid: false, errors };\n }\n\n for (let i = 0; i < criteria.entityTypeFilters.length; i++) {\n const filter = criteria.entityTypeFilters[i];\n if (!filter || typeof filter.entityTypeValue !== \"string\") {\n errors.push(\n `entityTypeFilters[${i}].entityTypeValue must be a non-empty string`\n );\n continue;\n }\n if (filter.entityTypeValue.trim().length === 0) {\n errors.push(\n `entityTypeFilters[${i}].entityTypeValue must be a non-empty string`\n );\n }\n if (\n filter.subtypeValues !== undefined &&\n !Array.isArray(filter.subtypeValues)\n ) {\n errors.push(`entityTypeFilters[${i}].subtypeValues must be an array`);\n }\n }\n\n if (criteria.ontologyScope !== undefined) {\n if (\n typeof criteria.ontologyScope !== \"object\" ||\n criteria.ontologyScope === null\n ) {\n errors.push(\"ontologyScope must be an object\");\n }\n }\n\n return errors.length === 0\n ? { valid: true }\n : { valid: false, errors };\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// src/lens-filter.contract.ts
|
|
2
2
|
function isLensFilterCriteria(value) {
|
|
3
|
-
|
|
3
|
+
if (!value || typeof value !== "object") return false;
|
|
4
|
+
const obj = value;
|
|
5
|
+
return typeof obj.version === "number" && typeof obj.kind === "string";
|
|
4
6
|
}
|
|
5
7
|
function isTaxonomyFilterCriteriaV1(value) {
|
|
6
8
|
if (!isLensFilterCriteria(value)) return false;
|
|
@@ -29,9 +31,6 @@ function validateFilterCriteria(value) {
|
|
|
29
31
|
]
|
|
30
32
|
};
|
|
31
33
|
}
|
|
32
|
-
function isRecord(value) {
|
|
33
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
34
|
-
}
|
|
35
34
|
function validateTaxonomyFilterV1(criteria) {
|
|
36
35
|
const errors = [];
|
|
37
36
|
if (!Array.isArray(criteria.entityTypeFilters)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lens-filter.contract.ts","../src/lens-workflow.contract.ts"],"names":[],"mappings":"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","file":"lens-workflow.contract.js","sourcesContent":["/**\n * Lens Filter Criteria Contract\n *\n * Version-discriminated filter DSL for lenses. Each filter criteria document\n * carries a `version` and `kind` discriminator so future shapes can coexist\n * without schema migrations. The Convex `filterCriteria` field remains v.any()\n * — all type enforcement happens here at the TypeScript contract layer.\n *\n * Forward-compatibility guarantees:\n * - `version` field: new versions add fields, never remove or rename existing ones\n * - `kind` field: new filter kinds (temporal, confidence-range) can be added\n * without touching taxonomy code paths\n * - `entityTypeFilters` array items are open to extension in future versions\n * - Resolution logic switches on `version` + `kind` to select the right resolver\n *\n * @module lucern/contracts/src/lens-filter\n */\n\n// ---------------------------------------------------------------------------\n// V1: Taxonomy Filter — entity type + subtype matching\n// ---------------------------------------------------------------------------\n\n/**\n * A single entity type filter entry. Matches nodes whose `nodeType` equals\n * `entityTypeValue`, optionally further narrowed by subtype membership.\n *\n * V2 will add `propertyMatchers` here for arbitrary JSON Schema facet queries.\n */\nexport type EntityTypeFilterV1 = {\n /** References ontologyVersion.entityTypes[].value, e.g. \"company\" */\n entityTypeValue: string;\n\n /** Optional subtype narrowing. If omitted or empty, all subtypes match. */\n subtypeValues?: string[];\n};\n\n/**\n * Optional scope to restrict which ontology the filter resolves against.\n * If omitted, resolution uses whatever ontology is active in the workspace.\n */\nexport type OntologyScope = {\n /** Restrict to a specific ontology by key, e.g. \"vc-investment\" */\n ontologyKey?: string;\n};\n\n/**\n * Taxonomy filter criteria v1: entity type + subtype matching over ontology.\n */\nexport type TaxonomyFilterCriteriaV1 = {\n version: 1;\n kind: \"taxonomy\";\n entityTypeFilters: EntityTypeFilterV1[];\n ontologyScope?: OntologyScope;\n};\n\n// ---------------------------------------------------------------------------\n// Union: All filter criteria versions and kinds\n// ---------------------------------------------------------------------------\n\n/**\n * Discriminated union of all supported filter criteria.\n * Resolution logic switches on `version` + `kind`.\n *\n * To add a new filter kind:\n * 1. Define a new type (e.g., TemporalFilterCriteriaV1)\n * 2. Add it to this union\n * 3. Add a resolver in taxonomy-filter.ts\n * 4. No schema migration needed — filterCriteria is v.any()\n */\nexport type LensFilterCriteria = TaxonomyFilterCriteriaV1;\n// Future: | TemporalFilterCriteriaV1 | ConfidenceRangeFilterCriteriaV1 | ...\n\n// ---------------------------------------------------------------------------\n// Type guards\n// ---------------------------------------------------------------------------\n\nexport function isLensFilterCriteria(\n value: unknown\n): value is LensFilterCriteria {\n return isRecord(value) && typeof value.version === \"number\" && typeof value.kind === \"string\";\n}\n\nexport function isTaxonomyFilterCriteriaV1(\n value: unknown\n): value is TaxonomyFilterCriteriaV1 {\n if (!isLensFilterCriteria(value)) return false;\n return value.version === 1 && value.kind === \"taxonomy\";\n}\n\n// ---------------------------------------------------------------------------\n// Validation\n// ---------------------------------------------------------------------------\n\nexport type FilterValidationResult =\n | { valid: true }\n | { valid: false; errors: string[] };\n\n/**\n * Validate a filter criteria document at the contract layer.\n * This runs before persisting to Convex.\n */\nexport function validateFilterCriteria(\n value: unknown\n): FilterValidationResult {\n if (value === undefined || value === null) {\n return { valid: true }; // filterCriteria is optional\n }\n\n if (!isLensFilterCriteria(value)) {\n return {\n valid: false,\n errors: [\n 'filterCriteria must have numeric \"version\" and string \"kind\" fields',\n ],\n };\n }\n\n if (isTaxonomyFilterCriteriaV1(value)) {\n return validateTaxonomyFilterV1(value);\n }\n\n // Cast to access properties — TypeScript narrows to `never` when all union\n // members are exhausted, but at runtime unknown version/kind combos are possible.\n const raw = value as { version: number; kind: string };\n return {\n valid: false,\n errors: [\n `Unsupported filter criteria: version=${raw.version}, kind=${raw.kind}`,\n ],\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction validateTaxonomyFilterV1(\n criteria: TaxonomyFilterCriteriaV1\n): FilterValidationResult {\n const errors: string[] = [];\n\n if (!Array.isArray(criteria.entityTypeFilters)) {\n errors.push(\"entityTypeFilters must be an array\");\n return { valid: false, errors };\n }\n\n if (criteria.entityTypeFilters.length === 0) {\n errors.push(\"entityTypeFilters must contain at least one entry\");\n return { valid: false, errors };\n }\n\n for (let i = 0; i < criteria.entityTypeFilters.length; i++) {\n const filter = criteria.entityTypeFilters[i];\n if (!filter || typeof filter.entityTypeValue !== \"string\") {\n errors.push(\n `entityTypeFilters[${i}].entityTypeValue must be a non-empty string`\n );\n continue;\n }\n if (filter.entityTypeValue.trim().length === 0) {\n errors.push(\n `entityTypeFilters[${i}].entityTypeValue must be a non-empty string`\n );\n }\n if (\n filter.subtypeValues !== undefined &&\n !Array.isArray(filter.subtypeValues)\n ) {\n errors.push(`entityTypeFilters[${i}].subtypeValues must be an array`);\n }\n }\n\n if (criteria.ontologyScope !== undefined) {\n if (\n typeof criteria.ontologyScope !== \"object\" ||\n criteria.ontologyScope === null\n ) {\n errors.push(\"ontologyScope must be an object\");\n }\n }\n\n return errors.length === 0\n ? { valid: true }\n : { valid: false, errors };\n}\n","/**\n * Canonical lens workflow contract shared across schema, SDK, and MCP surfaces.\n */\n\n// Re-export filter criteria types for consumers who import from lens-workflow\nexport type {\n LensFilterCriteria,\n TaxonomyFilterCriteriaV1,\n EntityTypeFilterV1,\n OntologyScope,\n FilterValidationResult,\n} from \"./lens-filter.contract\";\nexport {\n validateFilterCriteria,\n isLensFilterCriteria,\n isTaxonomyFilterCriteriaV1,\n} from \"./lens-filter.contract\";\n\nexport const LENS_PERSPECTIVE_TYPES = [\n \"investigation\",\n \"monitoring\",\n \"analysis\",\n \"comparison\",\n \"taxonomy\",\n] as const;\n\nexport type LensPerspectiveType = (typeof LENS_PERSPECTIVE_TYPES)[number];\n\nexport const LENS_STATUSES = [\"draft\", \"active\", \"archived\"] as const;\n\nexport type LensStatus = (typeof LENS_STATUSES)[number];\n\nexport const LENS_TASK_TEMPLATE_PRIORITIES = [\n \"critical\",\n \"high\",\n \"medium\",\n \"low\",\n] as const;\n\nexport type LensTaskTemplatePriority =\n (typeof LENS_TASK_TEMPLATE_PRIORITIES)[number];\n\nexport type LensLooseMetadata = Record<string, unknown>;\n\nexport type LensPromptTemplateReference = {\n key: string;\n promptRef: string;\n phase?: string;\n role?: string;\n version?: string;\n required?: boolean;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowStepTemplate = {\n key: string;\n title: string;\n description?: string;\n promptTemplateKey?: string;\n taskTemplateKeys?: string[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowTemplate = {\n key: string;\n name: string;\n description?: string;\n steps: LensWorkflowStepTemplate[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensTaskTemplate = {\n key: string;\n title: string;\n description?: string;\n priority?: LensTaskTemplatePriority;\n phase?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensQuestionTemplate = {\n key: string;\n text: string;\n priority?: LensTaskTemplatePriority;\n linkedBeliefKey?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensBranchMigrationSuggestion = {\n recommendedTool: \"create_lens\";\n perspectiveType: LensPerspectiveType;\n message: string;\n suggestedPayload: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n perspectiveType: LensPerspectiveType;\n };\n};\n\nexport const BRANCH_DEPRECATION_MESSAGE =\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens instead.\";\n\nexport type DeprecatedBranchMetadata = {\n deprecated: true;\n deprecationMessage: string;\n lensSuggestion: LensBranchMigrationSuggestion;\n};\n\nexport function inferLensPerspectiveTypeFromBranchSchema(\n schema?: string | null\n): LensPerspectiveType {\n const normalized = schema?.trim().toLowerCase();\n if (normalized === \"phase\") {\n return \"monitoring\";\n }\n if (normalized === \"axis\" || normalized === \"dimension\") {\n return \"comparison\";\n }\n if (normalized === \"track\") {\n return \"investigation\";\n }\n return \"analysis\";\n}\n\nexport function migrateBranchToLens(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): LensBranchMigrationSuggestion {\n const perspectiveType = inferLensPerspectiveTypeFromBranchSchema(args.schema);\n return {\n recommendedTool: \"create_lens\",\n perspectiveType,\n message:\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens with the suggested payload instead.\",\n suggestedPayload: {\n name: args.name,\n description: args.description,\n topicId: args.topicId,\n workspaceId: args.workspaceId,\n perspectiveType,\n },\n };\n}\n\nexport function buildDeprecatedBranchMetadata(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): DeprecatedBranchMetadata {\n return {\n deprecated: true,\n deprecationMessage: BRANCH_DEPRECATION_MESSAGE,\n lensSuggestion: migrateBranchToLens(args),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lens-filter.contract.ts","../src/lens-workflow.contract.ts"],"names":[],"mappings":";AA4EO,SAAS,qBACd,KAAA,EAC6B;AAC7B,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AAChD,EAAA,MAAM,GAAA,GAAM,KAAA;AACZ,EAAA,OAAO,OAAO,GAAA,CAAI,OAAA,KAAY,QAAA,IAAY,OAAO,IAAI,IAAA,KAAS,QAAA;AAChE;AAEO,SAAS,2BACd,KAAA,EACmC;AACnC,EAAA,IAAI,CAAC,oBAAA,CAAqB,KAAK,CAAA,EAAG,OAAO,KAAA;AACzC,EAAA,OAAO,KAAA,CAAM,OAAA,KAAY,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,UAAA;AAC/C;AAcO,SAAS,uBACd,KAAA,EACwB;AACxB,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AAAA,EACvB;AAEA,EAAA,IAAI,CAAC,oBAAA,CAAqB,KAAK,CAAA,EAAG;AAChC,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,MAAA,EAAQ;AAAA,QACN;AAAA;AACF,KACF;AAAA,EACF;AAEA,EAAA,IAAI,0BAAA,CAA2B,KAAK,CAAA,EAAG;AACrC,IAAA,OAAO,yBAAyB,KAAK,CAAA;AAAA,EACvC;AAIA,EAAA,MAAM,GAAA,GAAM,KAAA;AACZ,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,KAAA;AAAA,IACP,MAAA,EAAQ;AAAA,MACN,CAAA,qCAAA,EAAwC,GAAA,CAAI,OAAO,CAAA,OAAA,EAAU,IAAI,IAAI,CAAA;AAAA;AACvE,GACF;AACF;AAEA,SAAS,yBACP,QAAA,EACwB;AACxB,EAAA,MAAM,SAAmB,EAAC;AAE1B,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,iBAAiB,CAAA,EAAG;AAC9C,IAAA,MAAA,CAAO,KAAK,oCAAoC,CAAA;AAChD,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAO;AAAA,EAChC;AAEA,EAAA,IAAI,QAAA,CAAS,iBAAA,CAAkB,MAAA,KAAW,CAAA,EAAG;AAC3C,IAAA,MAAA,CAAO,KAAK,mDAAmD,CAAA;AAC/D,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAO;AAAA,EAChC;AAEA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AAC1D,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,iBAAA,CAAkB,CAAC,CAAA;AAC3C,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,oBAAoB,QAAA,EAAU;AACzD,MAAA,MAAA,CAAO,IAAA;AAAA,QACL,qBAAqB,CAAC,CAAA,4CAAA;AAAA,OACxB;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,MAAA,CAAO,eAAA,CAAgB,IAAA,EAAK,CAAE,WAAW,CAAA,EAAG;AAC9C,MAAA,MAAA,CAAO,IAAA;AAAA,QACL,qBAAqB,CAAC,CAAA,4CAAA;AAAA,OACxB;AAAA,IACF;AACA,IAAA,IACE,MAAA,CAAO,kBAAkB,MAAA,IACzB,CAAC,MAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,EACnC;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,kBAAA,EAAqB,CAAC,CAAA,gCAAA,CAAkC,CAAA;AAAA,IACtE;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,CAAS,kBAAkB,MAAA,EAAW;AACxC,IAAA,IACE,OAAO,QAAA,CAAS,aAAA,KAAkB,QAAA,IAClC,QAAA,CAAS,kBAAkB,IAAA,EAC3B;AACA,MAAA,MAAA,CAAO,KAAK,iCAAiC,CAAA;AAAA,IAC/C;AAAA,EACF;AAEA,EAAA,OAAO,MAAA,CAAO,MAAA,KAAW,CAAA,GACrB,EAAE,KAAA,EAAO,MAAK,GACd,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAO;AAC7B;;;ACpKO,IAAM,sBAAA,GAAyB;AAAA,EACpC,eAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF;AAIO,IAAM,aAAA,GAAgB,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU;AAIpD,IAAM,6BAAA,GAAgC;AAAA,EAC3C,UAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAgEO,IAAM,0BAAA,GACX;AAQK,SAAS,yCACd,MAAA,EACqB;AACrB,EAAA,MAAM,UAAA,GAAa,MAAA,EAAQ,IAAA,EAAK,CAAE,WAAA,EAAY;AAC9C,EAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAA,KAAe,MAAA,IAAU,UAAA,KAAe,WAAA,EAAa;AACvD,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,IAAA,OAAO,eAAA;AAAA,EACT;AACA,EAAA,OAAO,UAAA;AACT;AAEO,SAAS,oBAAoB,IAAA,EAMF;AAChC,EAAA,MAAM,eAAA,GAAkB,wCAAA,CAAyC,IAAA,CAAK,MAAM,CAAA;AAC5E,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,aAAA;AAAA,IACjB,eAAA;AAAA,IACA,OAAA,EACE,qHAAA;AAAA,IACF,gBAAA,EAAkB;AAAA,MAChB,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB;AAAA;AACF,GACF;AACF;AAEO,SAAS,8BAA8B,IAAA,EAMjB;AAC3B,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,IAAA;AAAA,IACZ,kBAAA,EAAoB,0BAAA;AAAA,IACpB,cAAA,EAAgB,oBAAoB,IAAI;AAAA,GAC1C;AACF","file":"lens-workflow.contract.js","sourcesContent":["/**\n * Lens Filter Criteria Contract\n *\n * Version-discriminated filter DSL for lenses. Each filter criteria document\n * carries a `version` and `kind` discriminator so future shapes can coexist\n * without schema migrations. The Convex `filterCriteria` field remains v.any()\n * — all type enforcement happens here at the TypeScript contract layer.\n *\n * Forward-compatibility guarantees:\n * - `version` field: new versions add fields, never remove or rename existing ones\n * - `kind` field: new filter kinds (temporal, confidence-range) can be added\n * without touching taxonomy code paths\n * - `entityTypeFilters` array items are open to extension in future versions\n * - Resolution logic switches on `version` + `kind` to select the right resolver\n *\n * @module lucern/contracts/src/lens-filter\n */\n\n// ---------------------------------------------------------------------------\n// V1: Taxonomy Filter — entity type + subtype matching\n// ---------------------------------------------------------------------------\n\n/**\n * A single entity type filter entry. Matches nodes whose `nodeType` equals\n * `entityTypeValue`, optionally further narrowed by subtype membership.\n *\n * V2 will add `propertyMatchers` here for arbitrary JSON Schema facet queries.\n */\nexport type EntityTypeFilterV1 = {\n /** References ontologyVersion.entityTypes[].value, e.g. \"company\" */\n entityTypeValue: string;\n\n /** Optional subtype narrowing. If omitted or empty, all subtypes match. */\n subtypeValues?: string[];\n};\n\n/**\n * Optional scope to restrict which ontology the filter resolves against.\n * If omitted, resolution uses whatever ontology is active in the workspace.\n */\nexport type OntologyScope = {\n /** Restrict to a specific ontology by key, e.g. \"vc-investment\" */\n ontologyKey?: string;\n};\n\n/**\n * Taxonomy filter criteria v1: entity type + subtype matching over ontology.\n */\nexport type TaxonomyFilterCriteriaV1 = {\n version: 1;\n kind: \"taxonomy\";\n entityTypeFilters: EntityTypeFilterV1[];\n ontologyScope?: OntologyScope;\n};\n\n// ---------------------------------------------------------------------------\n// Union: All filter criteria versions and kinds\n// ---------------------------------------------------------------------------\n\n/**\n * Discriminated union of all supported filter criteria.\n * Resolution logic switches on `version` + `kind`.\n *\n * To add a new filter kind:\n * 1. Define a new type (e.g., TemporalFilterCriteriaV1)\n * 2. Add it to this union\n * 3. Add a resolver in taxonomy-filter.ts\n * 4. No schema migration needed — filterCriteria is v.any()\n */\nexport type LensFilterCriteria = TaxonomyFilterCriteriaV1;\n// Future: | TemporalFilterCriteriaV1 | ConfidenceRangeFilterCriteriaV1 | ...\n\n// ---------------------------------------------------------------------------\n// Type guards\n// ---------------------------------------------------------------------------\n\nexport function isLensFilterCriteria(\n value: unknown\n): value is LensFilterCriteria {\n if (!value || typeof value !== \"object\") return false;\n const obj = value as Record<string, unknown>;\n return typeof obj.version === \"number\" && typeof obj.kind === \"string\";\n}\n\nexport function isTaxonomyFilterCriteriaV1(\n value: unknown\n): value is TaxonomyFilterCriteriaV1 {\n if (!isLensFilterCriteria(value)) return false;\n return value.version === 1 && value.kind === \"taxonomy\";\n}\n\n// ---------------------------------------------------------------------------\n// Validation\n// ---------------------------------------------------------------------------\n\nexport type FilterValidationResult =\n | { valid: true }\n | { valid: false; errors: string[] };\n\n/**\n * Validate a filter criteria document at the contract layer.\n * This runs before persisting to Convex.\n */\nexport function validateFilterCriteria(\n value: unknown\n): FilterValidationResult {\n if (value === undefined || value === null) {\n return { valid: true }; // filterCriteria is optional\n }\n\n if (!isLensFilterCriteria(value)) {\n return {\n valid: false,\n errors: [\n 'filterCriteria must have numeric \"version\" and string \"kind\" fields',\n ],\n };\n }\n\n if (isTaxonomyFilterCriteriaV1(value)) {\n return validateTaxonomyFilterV1(value);\n }\n\n // Cast to access properties — TypeScript narrows to `never` when all union\n // members are exhausted, but at runtime unknown version/kind combos are possible.\n const raw = value as { version: number; kind: string };\n return {\n valid: false,\n errors: [\n `Unsupported filter criteria: version=${raw.version}, kind=${raw.kind}`,\n ],\n };\n}\n\nfunction validateTaxonomyFilterV1(\n criteria: TaxonomyFilterCriteriaV1\n): FilterValidationResult {\n const errors: string[] = [];\n\n if (!Array.isArray(criteria.entityTypeFilters)) {\n errors.push(\"entityTypeFilters must be an array\");\n return { valid: false, errors };\n }\n\n if (criteria.entityTypeFilters.length === 0) {\n errors.push(\"entityTypeFilters must contain at least one entry\");\n return { valid: false, errors };\n }\n\n for (let i = 0; i < criteria.entityTypeFilters.length; i++) {\n const filter = criteria.entityTypeFilters[i];\n if (!filter || typeof filter.entityTypeValue !== \"string\") {\n errors.push(\n `entityTypeFilters[${i}].entityTypeValue must be a non-empty string`\n );\n continue;\n }\n if (filter.entityTypeValue.trim().length === 0) {\n errors.push(\n `entityTypeFilters[${i}].entityTypeValue must be a non-empty string`\n );\n }\n if (\n filter.subtypeValues !== undefined &&\n !Array.isArray(filter.subtypeValues)\n ) {\n errors.push(`entityTypeFilters[${i}].subtypeValues must be an array`);\n }\n }\n\n if (criteria.ontologyScope !== undefined) {\n if (\n typeof criteria.ontologyScope !== \"object\" ||\n criteria.ontologyScope === null\n ) {\n errors.push(\"ontologyScope must be an object\");\n }\n }\n\n return errors.length === 0\n ? { valid: true }\n : { valid: false, errors };\n}\n","/**\n * Canonical lens workflow contract shared across schema, SDK, and MCP surfaces.\n */\n\n// Re-export filter criteria types for consumers who import from lens-workflow\nexport type {\n LensFilterCriteria,\n TaxonomyFilterCriteriaV1,\n EntityTypeFilterV1,\n OntologyScope,\n FilterValidationResult,\n} from \"./lens-filter.contract\";\nexport {\n validateFilterCriteria,\n isLensFilterCriteria,\n isTaxonomyFilterCriteriaV1,\n} from \"./lens-filter.contract\";\n\nexport const LENS_PERSPECTIVE_TYPES = [\n \"investigation\",\n \"monitoring\",\n \"analysis\",\n \"comparison\",\n \"taxonomy\",\n] as const;\n\nexport type LensPerspectiveType = (typeof LENS_PERSPECTIVE_TYPES)[number];\n\nexport const LENS_STATUSES = [\"draft\", \"active\", \"archived\"] as const;\n\nexport type LensStatus = (typeof LENS_STATUSES)[number];\n\nexport const LENS_TASK_TEMPLATE_PRIORITIES = [\n \"critical\",\n \"high\",\n \"medium\",\n \"low\",\n] as const;\n\nexport type LensTaskTemplatePriority =\n (typeof LENS_TASK_TEMPLATE_PRIORITIES)[number];\n\nexport type LensLooseMetadata = Record<string, unknown>;\n\nexport type LensPromptTemplateReference = {\n key: string;\n promptRef: string;\n phase?: string;\n role?: string;\n version?: string;\n required?: boolean;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowStepTemplate = {\n key: string;\n title: string;\n description?: string;\n promptTemplateKey?: string;\n taskTemplateKeys?: string[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowTemplate = {\n key: string;\n name: string;\n description?: string;\n steps: LensWorkflowStepTemplate[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensTaskTemplate = {\n key: string;\n title: string;\n description?: string;\n priority?: LensTaskTemplatePriority;\n phase?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensQuestionTemplate = {\n key: string;\n text: string;\n priority?: LensTaskTemplatePriority;\n linkedBeliefKey?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensBranchMigrationSuggestion = {\n recommendedTool: \"create_lens\";\n perspectiveType: LensPerspectiveType;\n message: string;\n suggestedPayload: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n perspectiveType: LensPerspectiveType;\n };\n};\n\nexport const BRANCH_DEPRECATION_MESSAGE =\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens instead.\";\n\nexport type DeprecatedBranchMetadata = {\n deprecated: true;\n deprecationMessage: string;\n lensSuggestion: LensBranchMigrationSuggestion;\n};\n\nexport function inferLensPerspectiveTypeFromBranchSchema(\n schema?: string | null\n): LensPerspectiveType {\n const normalized = schema?.trim().toLowerCase();\n if (normalized === \"phase\") {\n return \"monitoring\";\n }\n if (normalized === \"axis\" || normalized === \"dimension\") {\n return \"comparison\";\n }\n if (normalized === \"track\") {\n return \"investigation\";\n }\n return \"analysis\";\n}\n\nexport function migrateBranchToLens(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): LensBranchMigrationSuggestion {\n const perspectiveType = inferLensPerspectiveTypeFromBranchSchema(args.schema);\n return {\n recommendedTool: \"create_lens\",\n perspectiveType,\n message:\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens with the suggested payload instead.\",\n suggestedPayload: {\n name: args.name,\n description: args.description,\n topicId: args.topicId,\n workspaceId: args.workspaceId,\n perspectiveType,\n },\n };\n}\n\nexport function buildDeprecatedBranchMetadata(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): DeprecatedBranchMetadata {\n return {\n deprecated: true,\n deprecationMessage: BRANCH_DEPRECATION_MESSAGE,\n lensSuggestion: migrateBranchToLens(args),\n };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SessionPrincipalType, SessionAuthMode
|
|
1
|
+
import { SessionPrincipalType, SessionAuthMode } from './auth.contract.js';
|
|
2
2
|
import './convex-admin.contract.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -18,7 +18,7 @@ declare const MCP_GATEWAY_EVALUATE_ENGINEERING_CONTRACT_ENDPOINT: "/api/platform
|
|
|
18
18
|
declare const MCP_GATEWAY_EVALUATE_RESEARCH_CONTRACT_ENDPOINT: "/api/platform/v1/mcp/contracts/evaluate-research";
|
|
19
19
|
declare const MCP_GATEWAY_ALLOWED_CLIENT_ENV: readonly ["LUCERN_API_KEY", "LUCERN_API_BASE_URL", "LUCERN_ENVIRONMENT", "LUCERN_USER_TOKEN"];
|
|
20
20
|
type McpGatewayAllowedClientEnv = (typeof MCP_GATEWAY_ALLOWED_CLIENT_ENV)[number];
|
|
21
|
-
declare const MCP_GATEWAY_FORBIDDEN_CLIENT_ENV: readonly ["
|
|
21
|
+
declare const MCP_GATEWAY_FORBIDDEN_CLIENT_ENV: readonly ["MC_CONVEX_URL", "MC_DEPLOY_KEY", "LUCERN_CONVEX_URL", "LUCERN_DEPLOY_KEY", "TENANT_CONVEX_URL", "TENANT_DEPLOY_KEY"];
|
|
22
22
|
type McpGatewayForbiddenClientEnv = (typeof MCP_GATEWAY_FORBIDDEN_CLIENT_ENV)[number];
|
|
23
23
|
declare const MCP_GATEWAY_BOOTSTRAP_REQUIRED_FIELDS: readonly ["tenant", "session", "permissions"];
|
|
24
24
|
type McpGatewayBootstrapRequiredField = (typeof MCP_GATEWAY_BOOTSTRAP_REQUIRED_FIELDS)[number];
|
|
@@ -42,9 +42,6 @@ type McpGatewaySessionContext = {
|
|
|
42
42
|
sessionId?: string;
|
|
43
43
|
userEmail?: string;
|
|
44
44
|
expiresAt?: number;
|
|
45
|
-
delegatedBy?: string;
|
|
46
|
-
delegationChain?: SessionDelegationHop[];
|
|
47
|
-
worktreeId?: string;
|
|
48
45
|
};
|
|
49
46
|
type McpGatewayPermissionContext = {
|
|
50
47
|
allowedTools: string[] | null;
|
|
@@ -65,7 +62,6 @@ type McpGatewayBootstrapRequest = {
|
|
|
65
62
|
sessionId?: string;
|
|
66
63
|
agentIdentity?: string;
|
|
67
64
|
workspaceId?: string;
|
|
68
|
-
worktreeId?: string;
|
|
69
65
|
};
|
|
70
66
|
type McpGatewayWritePolicyCheckRequest = {
|
|
71
67
|
topicId?: string;
|
|
@@ -131,19 +127,6 @@ type McpGatewayBuildSessionDecision = {
|
|
|
131
127
|
question: string;
|
|
132
128
|
decision: string;
|
|
133
129
|
};
|
|
134
|
-
type McpGatewayBuildSessionTask = {
|
|
135
|
-
taskId: string;
|
|
136
|
-
title: string;
|
|
137
|
-
status: "todo" | "in_progress" | "blocked" | "done";
|
|
138
|
-
priority: "low" | "medium" | "high" | "urgent";
|
|
139
|
-
description?: string;
|
|
140
|
-
taskType?: string;
|
|
141
|
-
linkedBeliefId?: string;
|
|
142
|
-
linkedQuestionId?: string;
|
|
143
|
-
linkedWorktreeId?: string;
|
|
144
|
-
outputSummary?: string;
|
|
145
|
-
tags?: string[];
|
|
146
|
-
};
|
|
147
130
|
type McpGatewayBuildSessionWorktreeSummary = {
|
|
148
131
|
worktreeId: string;
|
|
149
132
|
title: string;
|
|
@@ -168,9 +151,6 @@ type McpGatewayBeginBuildSessionResponse = {
|
|
|
168
151
|
sessionMode: string;
|
|
169
152
|
targetBeliefIds: string[];
|
|
170
153
|
targetQuestionIds: string[];
|
|
171
|
-
taskIds: string[];
|
|
172
|
-
incompleteTaskIds: string[];
|
|
173
|
-
tasks: McpGatewayBuildSessionTask[];
|
|
174
154
|
topBeliefs: McpGatewayBuildSessionBelief[];
|
|
175
155
|
openQuestions: McpGatewayBuildSessionQuestion[];
|
|
176
156
|
resolvedDecisions: McpGatewayBuildSessionDecision[];
|
|
@@ -198,4 +178,4 @@ type McpGatewayOwnedBootstrapOperation = (typeof MCP_GATEWAY_OWNED_BOOTSTRAP_OPE
|
|
|
198
178
|
declare const MCP_GATEWAY_CLIENT_ONLY_PACKAGES: readonly ["@lucern/sdk", "@lucern/mcp", "@lucern/contracts"];
|
|
199
179
|
type McpGatewayClientOnlyPackage = (typeof MCP_GATEWAY_CLIENT_ONLY_PACKAGES)[number];
|
|
200
180
|
|
|
201
|
-
export { MCP_GATEWAY_ALLOWED_CLIENT_ENV, MCP_GATEWAY_BEGIN_BUILD_SESSION_ENDPOINT, MCP_GATEWAY_BOOTSTRAP_ENDPOINT, MCP_GATEWAY_BOOTSTRAP_REQUIRED_FIELDS, MCP_GATEWAY_BOUNDARY_CONTRACT_VERSION, MCP_GATEWAY_CLIENT_ONLY_PACKAGES, MCP_GATEWAY_EVALUATE_ENGINEERING_CONTRACT_ENDPOINT, MCP_GATEWAY_EVALUATE_RESEARCH_CONTRACT_ENDPOINT, MCP_GATEWAY_FORBIDDEN_CLIENT_ENV, MCP_GATEWAY_OWNED_BOOTSTRAP_OPERATIONS, MCP_GATEWAY_WRITE_POLICY_CHECK_ENDPOINT, type McpGatewayAllowedClientEnv, type McpGatewayBeginBuildSessionRequest, type McpGatewayBeginBuildSessionResponse, type McpGatewayBootstrapRequest, type McpGatewayBootstrapRequiredField, type McpGatewayBootstrapResponse, type McpGatewayBuildSessionBelief, type McpGatewayBuildSessionDecision, type McpGatewayBuildSessionQuestion, type
|
|
181
|
+
export { MCP_GATEWAY_ALLOWED_CLIENT_ENV, MCP_GATEWAY_BEGIN_BUILD_SESSION_ENDPOINT, MCP_GATEWAY_BOOTSTRAP_ENDPOINT, MCP_GATEWAY_BOOTSTRAP_REQUIRED_FIELDS, MCP_GATEWAY_BOUNDARY_CONTRACT_VERSION, MCP_GATEWAY_CLIENT_ONLY_PACKAGES, MCP_GATEWAY_EVALUATE_ENGINEERING_CONTRACT_ENDPOINT, MCP_GATEWAY_EVALUATE_RESEARCH_CONTRACT_ENDPOINT, MCP_GATEWAY_FORBIDDEN_CLIENT_ENV, MCP_GATEWAY_OWNED_BOOTSTRAP_OPERATIONS, MCP_GATEWAY_WRITE_POLICY_CHECK_ENDPOINT, type McpGatewayAllowedClientEnv, type McpGatewayBeginBuildSessionRequest, type McpGatewayBeginBuildSessionResponse, type McpGatewayBootstrapRequest, type McpGatewayBootstrapRequiredField, type McpGatewayBootstrapResponse, type McpGatewayBuildSessionBelief, type McpGatewayBuildSessionDecision, type McpGatewayBuildSessionQuestion, type McpGatewayBuildSessionWorktreeSummary, type McpGatewayClientOnlyPackage, type McpGatewayContractEvaluationResponse, type McpGatewayEvaluateEngineeringContractRequest, type McpGatewayEvaluateResearchContractRequest, type McpGatewayForbiddenClientEnv, type McpGatewayJsonArray, type McpGatewayJsonObject, type McpGatewayJsonValue, type McpGatewayOwnedBootstrapOperation, type McpGatewayPermissionContext, type McpGatewaySessionContext, type McpGatewayTenantContext, type McpGatewayWritePolicyCheckRequest, type McpGatewayWritePolicyCheckResponse };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mcp-gateway-boundary.contract.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../src/mcp-gateway-boundary.contract.ts"],"names":[],"mappings":";AAcO,IAAM,qCAAA,GAAwC;AAE9C,IAAM,8BAAA,GACX;AAEK,IAAM,uCAAA,GACX;AAEK,IAAM,wCAAA,GACX;AAEK,IAAM,kDAAA,GACX;AAEK,IAAM,+CAAA,GACX;AAEK,IAAM,8BAAA,GAAiC;AAAA,EAC5C,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF;AAIO,IAAM,gCAAA,GAAmC;AAAA,EAC9C,eAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF;AAIO,IAAM,qCAAA,GAAwC;AAAA,EACnD,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AAoLO,IAAM,sCAAA,GAAyC;AAAA,EACpD,sBAAA;AAAA,EACA,kBAAA;AAAA,EACA,2BAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF;AAIO,IAAM,gCAAA,GAAmC;AAAA,EAC9C,aAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF","file":"mcp-gateway-boundary.contract.js","sourcesContent":["/**\n * MCP gateway boundary contract\n *\n * Defines the target thin-client boundary for the Lucern MCP server. MCP is a\n * client of the Lucern gateway, not a privileged Convex or Master Control\n * process. The gateway owns tenant resolution, deploy-key access, policy, and\n * session persistence.\n */\n\nimport type {\n SessionAuthMode,\n SessionPrincipalType,\n} from \"./auth.contract\";\n\nexport const MCP_GATEWAY_BOUNDARY_CONTRACT_VERSION = \"2026-04-27\" as const;\n\nexport const MCP_GATEWAY_BOOTSTRAP_ENDPOINT =\n \"/api/platform/v1/mcp/session\" as const;\n\nexport const MCP_GATEWAY_WRITE_POLICY_CHECK_ENDPOINT =\n \"/api/platform/v1/mcp/write-policy/check\" as const;\n\nexport const MCP_GATEWAY_BEGIN_BUILD_SESSION_ENDPOINT =\n \"/api/platform/v1/mcp/build-session/begin\" as const;\n\nexport const MCP_GATEWAY_EVALUATE_ENGINEERING_CONTRACT_ENDPOINT =\n \"/api/platform/v1/mcp/contracts/evaluate-engineering\" as const;\n\nexport const MCP_GATEWAY_EVALUATE_RESEARCH_CONTRACT_ENDPOINT =\n \"/api/platform/v1/mcp/contracts/evaluate-research\" as const;\n\nexport const MCP_GATEWAY_ALLOWED_CLIENT_ENV = [\n \"LUCERN_API_KEY\",\n \"LUCERN_API_BASE_URL\",\n \"LUCERN_ENVIRONMENT\",\n \"LUCERN_USER_TOKEN\",\n] as const;\nexport type McpGatewayAllowedClientEnv =\n (typeof MCP_GATEWAY_ALLOWED_CLIENT_ENV)[number];\n\nexport const MCP_GATEWAY_FORBIDDEN_CLIENT_ENV = [\n \"MC_CONVEX_URL\",\n \"MC_DEPLOY_KEY\",\n \"LUCERN_CONVEX_URL\",\n \"LUCERN_DEPLOY_KEY\",\n \"TENANT_CONVEX_URL\",\n \"TENANT_DEPLOY_KEY\",\n] as const;\nexport type McpGatewayForbiddenClientEnv =\n (typeof MCP_GATEWAY_FORBIDDEN_CLIENT_ENV)[number];\n\nexport const MCP_GATEWAY_BOOTSTRAP_REQUIRED_FIELDS = [\n \"tenant\",\n \"session\",\n \"permissions\",\n] as const;\nexport type McpGatewayBootstrapRequiredField =\n (typeof MCP_GATEWAY_BOOTSTRAP_REQUIRED_FIELDS)[number];\n\nexport type McpGatewayTenantContext = {\n tenantId: string;\n slug: string;\n name: string;\n tier: string;\n methodologyPackIds: string[];\n apiKeyId?: string;\n};\n\nexport type McpGatewaySessionContext = {\n sessionType: \"agent\" | \"user\";\n userId: string;\n principalId: string;\n principalType: SessionPrincipalType;\n workspaceId?: string;\n authMode: SessionAuthMode;\n roles: string[];\n scopes: string[];\n sessionId?: string;\n userEmail?: string;\n expiresAt?: number;\n};\n\nexport type McpGatewayPermissionContext = {\n allowedTools: string[] | null;\n allowedTopics: string[] | null;\n groupIds: string[];\n permittedPackKeys: string[];\n permittedToolNames: string[];\n permittedTools: Array<{\n toolName: string;\n requiredRole?: string;\n approvalGateId?: string;\n isCore?: boolean;\n category?: string;\n }>;\n};\n\nexport type McpGatewayBootstrapRequest = {\n transportKind?: \"stdio\" | \"hosted\";\n sessionId?: string;\n agentIdentity?: string;\n workspaceId?: string;\n};\n\nexport type McpGatewayWritePolicyCheckRequest = {\n topicId?: string;\n role: string;\n toolName: string;\n};\n\nexport type McpGatewayBeginBuildSessionRequest = {\n worktreeId: string;\n branch?: string;\n branchBase?: string;\n prBase?: string;\n sessionMode?: string;\n activateIfPlanning?: boolean;\n};\n\nexport type McpGatewayJsonObject = {\n [key: string]: McpGatewayJsonValue | undefined;\n};\n\nexport type McpGatewayJsonArray = McpGatewayJsonValue[];\n\nexport type McpGatewayJsonValue =\n | null\n | boolean\n | number\n | string\n | McpGatewayJsonArray\n | McpGatewayJsonObject;\n\nexport type McpGatewayEvaluateEngineeringContractRequest = {\n beliefNodeId?: McpGatewayJsonValue;\n trigger?: McpGatewayJsonValue;\n testOutput?: McpGatewayJsonValue;\n tscOutput?: McpGatewayJsonValue;\n lintOutput?: McpGatewayJsonValue;\n sentryData?: McpGatewayJsonValue;\n};\n\nexport type McpGatewayEvaluateResearchContractRequest = {\n beliefNodeId?: McpGatewayJsonValue;\n trigger?: McpGatewayJsonValue;\n metricData?: McpGatewayJsonValue;\n referenceCheckData?: McpGatewayJsonValue;\n marketIndexData?: McpGatewayJsonValue;\n temporalData?: McpGatewayJsonValue;\n};\n\nexport type McpGatewayContractEvaluationResponse = McpGatewayJsonObject;\n\nexport type McpGatewayWritePolicyCheckResponse = {\n allowed: boolean;\n permission: string;\n rationale?: string;\n maxWritesPerSession?: number;\n toolCategory?: string | null;\n policy?: McpGatewayJsonObject | null;\n explanation?: McpGatewayJsonObject;\n reason: string;\n};\n\nexport type McpGatewayBootstrapResponse = {\n tenant: McpGatewayTenantContext;\n session: McpGatewaySessionContext;\n permissions: McpGatewayPermissionContext;\n};\n\nexport type McpGatewayBuildSessionBelief = {\n nodeId: string;\n text: string;\n confidence: number | null;\n};\n\nexport type McpGatewayBuildSessionQuestion = {\n nodeId: string;\n text: string;\n priority: string;\n};\n\nexport type McpGatewayBuildSessionDecision = {\n question: string;\n decision: string;\n};\n\nexport type McpGatewayBuildSessionWorktreeSummary = {\n worktreeId: string;\n title: string;\n status?: string;\n};\n\nexport type McpGatewayBeginBuildSessionResponse = {\n topicId: string;\n topicName: string;\n worktreeId: string;\n worktreeName: string;\n branch: string;\n branchBase: string;\n prBase: string;\n campaign: number | null;\n lane: string;\n laneOrderInCampaign: number | null;\n orderInLane: number | null;\n gate: string;\n hypothesis: string;\n focus: string;\n status: string;\n sessionMode: string;\n targetBeliefIds: string[];\n targetQuestionIds: string[];\n topBeliefs: McpGatewayBuildSessionBelief[];\n openQuestions: McpGatewayBuildSessionQuestion[];\n resolvedDecisions: McpGatewayBuildSessionDecision[];\n exitCriteria: string[];\n requiredDocs: string[];\n keyFiles: string[];\n pillarBeliefs: Array<{\n pillar: string;\n text: string;\n nodeId: string;\n }>;\n visionDocs: Array<{\n path: string;\n description: string;\n }>;\n dependencies: McpGatewayBuildSessionWorktreeSummary[];\n unblocks: Array<{\n worktreeId: string;\n title: string;\n }>;\n mergeOrderNotes: string;\n};\n\nexport const MCP_GATEWAY_OWNED_BOOTSTRAP_OPERATIONS = [\n \"validate_mcp_session\",\n \"record_key_usage\",\n \"resolve_default_workspace\",\n \"resolve_user_context\",\n \"create_user_session\",\n \"upsert_agent_principal\",\n] as const;\nexport type McpGatewayOwnedBootstrapOperation =\n (typeof MCP_GATEWAY_OWNED_BOOTSTRAP_OPERATIONS)[number];\n\nexport const MCP_GATEWAY_CLIENT_ONLY_PACKAGES = [\n \"@lucern/sdk\",\n \"@lucern/mcp\",\n \"@lucern/contracts\",\n] as const;\nexport type McpGatewayClientOnlyPackage =\n (typeof MCP_GATEWAY_CLIENT_ONLY_PACKAGES)[number];\n"]}
|
|
@@ -103,8 +103,11 @@ var BUILTIN_ENUM_FALLBACK = {
|
|
|
103
103
|
"question_added"
|
|
104
104
|
])
|
|
105
105
|
};
|
|
106
|
+
function normalizeEnumValue(value) {
|
|
107
|
+
return value.trim().toLowerCase();
|
|
108
|
+
}
|
|
106
109
|
async function validateSchemaEnumValue(_ctx, args) {
|
|
107
|
-
const normalized = args.value
|
|
110
|
+
const normalized = normalizeEnumValue(args.value);
|
|
108
111
|
if (!normalized) {
|
|
109
112
|
return { valid: false, source: "none" };
|
|
110
113
|
}
|
|
@@ -117,7 +120,7 @@ async function assertSchemaEnumValue(ctx, args) {
|
|
|
117
120
|
if (typeof args.value !== "string") {
|
|
118
121
|
return;
|
|
119
122
|
}
|
|
120
|
-
const normalized = args.value
|
|
123
|
+
const normalized = normalizeEnumValue(args.value);
|
|
121
124
|
if (!normalized) {
|
|
122
125
|
return;
|
|
123
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schema-helpers/enumValidation.ts"],"names":[],"mappings":";AAUA,IAAM,qBAAA,GAAyE;AAAA,EAC7E,UAAA,sBAAgB,GAAA,CAAI;AAAA,IAClB,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,aAAA,sBAAmB,GAAA,CAAI,CAAC,UAAU,OAAA,EAAS,WAAA,EAAa,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,EACxE,qBAAA,sBAA2B,GAAA,CAAI;AAAA,IAC7B,eAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,WAAA,sBAAiB,GAAA,CAAI;AAAA,IACnB,QAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,uBAAA;AAAA,IACA,yBAAA;AAAA,IACA,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,SAAA,sBAAe,GAAA,CAAI;AAAA,IACjB,UAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,mBAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,aAAA,sBAAmB,GAAA,CAAI;AAAA,IACrB,aAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,cAAA,sBAAoB,GAAA,CAAI;AAAA,IACtB,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AAAA,EACD,aAAA,sBAAmB,GAAA,CAAI;AAAA,IACrB,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACD;AACH,CAAA;AAEA,eAAsB,uBAAA,CACpB,MACA,IAAA,EAKyD;AACzD,EAAA,MAAM,UAAA,GAAa,
|
|
1
|
+
{"version":3,"sources":["../../src/schema-helpers/enumValidation.ts"],"names":[],"mappings":"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","file":"enumValidation.js","sourcesContent":["export type SchemaEnumCategory =\n | \"topic_type\"\n | \"branch_schema\"\n | \"lens_perspective_type\"\n | \"belief_type\"\n | \"edge_type\"\n | \"worktree_type\"\n | \"worktree_phase\"\n | \"activity_type\";\n\nconst BUILTIN_ENUM_FALLBACK: Record<SchemaEnumCategory, ReadonlySet<string>> = {\n topic_type: new Set([\n \"domain\",\n \"theme\",\n \"deal\",\n \"strategy\",\n \"constitution\",\n \"project\",\n \"portfolio\",\n \"architecture\",\n \"capability\",\n \"runtime\",\n \"interface\",\n \"governance\",\n \"operations\",\n \"security\",\n \"data\",\n ]),\n branch_schema: new Set([\"pillar\", \"track\", \"dimension\", \"axis\", \"phase\"]),\n lens_perspective_type: new Set([\n \"investigation\",\n \"monitoring\",\n \"analysis\",\n \"comparison\",\n \"taxonomy\",\n ]),\n belief_type: new Set([\n \"belief\",\n \"hypothesis\",\n \"principle\",\n \"invariant\",\n \"assumption\",\n \"tenet\",\n \"prior\",\n \"preference\",\n \"goal\",\n \"forecast\",\n \"decision\",\n \"constraint\",\n \"tradeoff\",\n \"policy\",\n \"implementation_choice\",\n \"implementation_decision\",\n \"interface_contract\",\n \"migration_state\",\n \"code_pattern\",\n \"deprecation_notice\",\n ]),\n edge_type: new Set([\n \"supports\",\n \"informs\",\n \"depends_on\",\n \"derived_from\",\n \"contains\",\n \"tests\",\n \"supersedes\",\n \"responds_to\",\n \"belongs_to\",\n \"relates_to_thesis\",\n \"works_at\",\n \"invested_in\",\n \"competes_with\",\n \"participates_in\",\n \"founded_by\",\n \"evaluates\",\n \"performs\",\n \"function_in\",\n \"impacts\",\n \"raised_from\",\n \"mentioned_in\",\n \"perspective_on\",\n \"plays_theme\",\n ]),\n worktree_type: new Set([\n \"belief_test\",\n \"existential\",\n \"contradiction\",\n \"refinement\",\n \"coverage\",\n \"discovery\",\n \"clarification\",\n \"confirmation\",\n ]),\n worktree_phase: new Set([\n \"cluster_mapping\",\n \"hypothesis_formation\",\n \"question_generation\",\n \"evidence_collection\",\n \"synthesis\",\n \"decision\",\n \"retrospective\",\n ]),\n activity_type: new Set([\n \"create\",\n \"update\",\n \"review\",\n \"merge\",\n \"archive\",\n \"comment\",\n \"status_change\",\n \"evidence_added\",\n \"question_added\",\n ]),\n};\n\nfunction normalizeEnumValue(value: string): string {\n return value.trim().toLowerCase();\n}\n\nexport async function validateSchemaEnumValue(\n _ctx: unknown,\n args: {\n category: SchemaEnumCategory;\n value: string;\n tenantId?: string;\n }\n): Promise<{ valid: boolean; source: \"builtin\" | \"none\" }> {\n const normalized = normalizeEnumValue(args.value);\n if (!normalized) {\n return { valid: false, source: \"none\" };\n }\n\n if (BUILTIN_ENUM_FALLBACK[args.category].has(normalized)) {\n return { valid: true, source: \"builtin\" };\n }\n\n return { valid: false, source: \"none\" };\n}\n\nexport async function assertSchemaEnumValue(\n ctx: unknown,\n args: {\n category: SchemaEnumCategory;\n value?: string;\n tenantId?: string;\n context: string;\n }\n): Promise<string | undefined> {\n if (typeof args.value !== \"string\") {\n return;\n }\n const normalized = normalizeEnumValue(args.value);\n if (!normalized) {\n return;\n }\n\n const validation = await validateSchemaEnumValue(ctx, {\n category: args.category,\n value: normalized,\n tenantId: args.tenantId,\n });\n\n if (!validation.valid) {\n const tenantHint = args.tenantId ? ` for tenant ${args.tenantId}` : \"\";\n throw new Error(\n `[${args.context}] Invalid value \"${normalized}\" for category \"${args.category}\"${tenantHint}. ` +\n \"Add it to the contracts schema enum manifest before use.\"\n );\n }\n\n return normalized;\n}\n"]}
|
|
@@ -32,9 +32,8 @@ var DECISION_TYPES = [
|
|
|
32
32
|
"thesis_revise",
|
|
33
33
|
"thesis_abandon"
|
|
34
34
|
];
|
|
35
|
-
var DECISION_TYPE_SET = new Set(DECISION_TYPES);
|
|
36
35
|
function isDecisionType(value) {
|
|
37
|
-
return
|
|
36
|
+
return DECISION_TYPES.includes(value);
|
|
38
37
|
}
|
|
39
38
|
function canEvaluateOutcome(decisionTypeValue, decisionDate, now = Date.now()) {
|
|
40
39
|
if (!decisionDate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/schema-helpers/spine/nodes/decision.ts"],"names":[],"mappings":";;;AAGO,IAAM,eAAe,CAAA,CAAE,KAAA;AAAA,EAC5B,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAAA,EAClB,CAAA,CAAE,QAAQ,MAAM,CAAA;AAAA,EAChB,CAAA,CAAE,QAAQ,WAAW,CAAA;AAAA,EACrB,CAAA,CAAE,QAAQ,MAAM,CAAA;AAAA,EAChB,CAAA,CAAE,QAAQ,WAAW,CAAA;AAAA,EACrB,CAAA,CAAE,QAAQ,SAAS,CAAA;AAAA,EACnB,CAAA,CAAE,QAAQ,cAAc,CAAA;AAAA,EACxB,CAAA,CAAE,QAAQ,cAAc,CAAA;AAAA,EACxB,CAAA,CAAE,QAAQ,eAAe,CAAA;AAAA,EACzB,CAAA,CAAE,QAAQ,gBAAgB;AAC5B;AAEO,IAAM,kBAAkB,CAAA,CAAE,KAAA;AAAA,EAC/B,CAAA,CAAE,QAAQ,SAAS,CAAA;AAAA,EACnB,CAAA,CAAE,QAAQ,YAAY,CAAA;AAAA,EACtB,CAAA,CAAE,QAAQ,cAAc,CAAA;AAAA,EACxB,CAAA,CAAE,QAAQ,OAAO,CAAA;AAAA,EACjB,CAAA,CAAE,QAAQ,SAAS;AACrB;AAKA,IAAM,cAAA,GAAiB;AAAA,EACrB,QAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA;
|
|
1
|
+
{"version":3,"sources":["../../../../src/schema-helpers/spine/nodes/decision.ts"],"names":[],"mappings":"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","file":"decision.js","sourcesContent":["import type { Infer } from \"convex/values\";\nimport { v } from \"convex/values\";\n\nexport const decisionType = v.union(\n v.literal(\"invest\"),\n v.literal(\"pass\"),\n v.literal(\"follow_on\"),\n v.literal(\"exit\"),\n v.literal(\"deep_dive\"),\n v.literal(\"monitor\"),\n v.literal(\"deprioritize\"),\n v.literal(\"thesis_adopt\"),\n v.literal(\"thesis_revise\"),\n v.literal(\"thesis_abandon\")\n);\n\nexport const decisionOutcome = v.union(\n v.literal(\"pending\"),\n v.literal(\"successful\"),\n v.literal(\"unsuccessful\"),\n v.literal(\"mixed\"),\n v.literal(\"unknown\")\n);\n\nexport type DecisionType = Infer<typeof decisionType>;\nexport type DecisionOutcome = Infer<typeof decisionOutcome>;\n\nconst DECISION_TYPES = [\n \"invest\",\n \"pass\",\n \"follow_on\",\n \"exit\",\n \"deep_dive\",\n \"monitor\",\n \"deprioritize\",\n \"thesis_adopt\",\n \"thesis_revise\",\n \"thesis_abandon\",\n] as const satisfies readonly DecisionType[];\n\nexport function isDecisionType(value: string): value is DecisionType {\n return (DECISION_TYPES as readonly string[]).includes(value);\n}\n\nexport function canEvaluateOutcome(\n decisionTypeValue: DecisionType | undefined,\n decisionDate: number | undefined,\n now: number = Date.now()\n): boolean {\n if (!decisionDate) {\n return false;\n }\n\n const minWindowMs = {\n invest: 365 * 24 * 60 * 60 * 1000,\n pass: 180 * 24 * 60 * 60 * 1000,\n follow_on: 180 * 24 * 60 * 60 * 1000,\n exit: 90 * 24 * 60 * 60 * 1000,\n deep_dive: 30 * 24 * 60 * 60 * 1000,\n monitor: 90 * 24 * 60 * 60 * 1000,\n deprioritize: 180 * 24 * 60 * 60 * 1000,\n thesis_adopt: 365 * 24 * 60 * 60 * 1000,\n thesis_revise: 180 * 24 * 60 * 60 * 1000,\n thesis_abandon: 365 * 24 * 60 * 60 * 1000,\n }[decisionTypeValue ?? \"invest\"];\n\n return now - decisionDate >= minWindowMs;\n}\n\nexport function calculateCalibration(\n decisions: ReadonlyArray<{ confidence: number; successful: boolean }>\n): {\n calibrationScore: number;\n overconfident: boolean;\n underconfident: boolean;\n} {\n if (decisions.length < 10) {\n return {\n calibrationScore: 0.5,\n overconfident: false,\n underconfident: false,\n };\n }\n\n const highConf = decisions.filter((decision) => decision.confidence > 0.7);\n const medConf = decisions.filter(\n (decision) => decision.confidence >= 0.4 && decision.confidence <= 0.7\n );\n const lowConf = decisions.filter((decision) => decision.confidence < 0.4);\n\n const highSuccess =\n highConf.filter((decision) => decision.successful).length /\n (highConf.length || 1);\n const medSuccess =\n medConf.filter((decision) => decision.successful).length /\n (medConf.length || 1);\n const lowSuccess =\n lowConf.filter((decision) => decision.successful).length /\n (lowConf.length || 1);\n\n const calibrated = highSuccess > medSuccess && medSuccess > lowSuccess;\n const overconfident = highSuccess < medSuccess;\n const underconfident = lowSuccess > medSuccess;\n const calibrationScore = calibrated\n ? 0.8 + (highSuccess - lowSuccess) * 0.2\n : 0.5;\n\n return { calibrationScore, overconfident, underconfident };\n}\n"]}
|
|
@@ -19,39 +19,39 @@ var NODE_TYPES = [
|
|
|
19
19
|
"function",
|
|
20
20
|
"value_chain"
|
|
21
21
|
];
|
|
22
|
-
var NODE_TYPE_SET = new Set(NODE_TYPES);
|
|
23
|
-
var NODE_TYPE_TO_LAYER = /* @__PURE__ */ new Map([
|
|
24
|
-
["decision", "L4"],
|
|
25
|
-
["belief", "L3"],
|
|
26
|
-
["question", "L3"],
|
|
27
|
-
["theme", "L3"],
|
|
28
|
-
["deal", "L3"],
|
|
29
|
-
["claim", "L2"],
|
|
30
|
-
["evidence", "L2"],
|
|
31
|
-
["synthesis", "L2"],
|
|
32
|
-
["answer", "L2"],
|
|
33
|
-
["atomic_fact", "L1"],
|
|
34
|
-
["excerpt", "L1"],
|
|
35
|
-
["source", "L1"],
|
|
36
|
-
["topic", "organizational"],
|
|
37
|
-
["company", "ontological"],
|
|
38
|
-
["person", "ontological"],
|
|
39
|
-
["investor", "ontological"],
|
|
40
|
-
["function", "ontological"],
|
|
41
|
-
["value_chain", "ontological"]
|
|
42
|
-
]);
|
|
43
22
|
function isNodeType(value) {
|
|
44
|
-
return
|
|
23
|
+
return NODE_TYPES.includes(value);
|
|
45
24
|
}
|
|
46
25
|
function getLayerForNodeType(type) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
26
|
+
switch (type) {
|
|
27
|
+
case "decision":
|
|
28
|
+
return "L4";
|
|
29
|
+
case "belief":
|
|
30
|
+
case "question":
|
|
31
|
+
case "theme":
|
|
32
|
+
case "deal":
|
|
33
|
+
return "L3";
|
|
34
|
+
case "claim":
|
|
35
|
+
case "evidence":
|
|
36
|
+
case "synthesis":
|
|
37
|
+
case "answer":
|
|
38
|
+
return "L2";
|
|
39
|
+
case "atomic_fact":
|
|
40
|
+
case "excerpt":
|
|
41
|
+
case "source":
|
|
42
|
+
return "L1";
|
|
43
|
+
case "topic":
|
|
44
|
+
return "organizational";
|
|
45
|
+
case "company":
|
|
46
|
+
case "person":
|
|
47
|
+
case "investor":
|
|
48
|
+
case "function":
|
|
49
|
+
case "value_chain":
|
|
50
|
+
return "ontological";
|
|
50
51
|
}
|
|
51
|
-
return layer;
|
|
52
52
|
}
|
|
53
53
|
function resolveKnownLayerForNodeType(type) {
|
|
54
|
-
return isNodeType(type) ?
|
|
54
|
+
return isNodeType(type) ? getLayerForNodeType(type) : void 0;
|
|
55
55
|
}
|
|
56
56
|
function isEpistemicNodeType(type) {
|
|
57
57
|
return getLayerForNodeType(type) !== "ontological";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/schema-helpers/spine/tables/epistemicNodes.ts"],"names":[],"mappings":";AA4BO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;
|
|
1
|
+
{"version":3,"sources":["../../../../src/schema-helpers/spine/tables/epistemicNodes.ts"],"names":[],"mappings":";AA4BO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;AAEO,SAAS,WAAW,KAAA,EAAkC;AAC3D,EAAA,OAAQ,UAAA,CAAiC,SAAS,KAAK,CAAA;AACzD;AAEO,SAAS,oBAAoB,IAAA,EAAgC;AAClE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,UAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,QAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,OAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,aAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,gBAAA;AAAA,IACT,KAAK,SAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,aAAA;AACH,MAAA,OAAO,aAAA;AAAA;AAEb;AAEO,SAAS,6BACd,IAAA,EAC4B;AAC5B,EAAA,OAAO,UAAA,CAAW,IAAI,CAAA,GAAI,mBAAA,CAAoB,IAAI,CAAA,GAAI,MAAA;AACxD;AAEO,SAAS,oBAAoB,IAAA,EAAyB;AAC3D,EAAA,OAAO,mBAAA,CAAoB,IAAI,CAAA,KAAM,aAAA;AACvC","file":"epistemicNodes.js","sourcesContent":["export type NodeType =\n | \"decision\"\n | \"belief\"\n | \"question\"\n | \"theme\"\n | \"deal\"\n | \"topic\"\n | \"claim\"\n | \"evidence\"\n | \"synthesis\"\n | \"answer\"\n | \"atomic_fact\"\n | \"excerpt\"\n | \"source\"\n | \"company\"\n | \"person\"\n | \"investor\"\n | \"function\"\n | \"value_chain\";\n\nexport type EpistemicLayer =\n | \"L4\"\n | \"L3\"\n | \"L2\"\n | \"L1\"\n | \"ontological\"\n | \"organizational\";\n\nexport const NODE_TYPES = [\n \"decision\",\n \"belief\",\n \"question\",\n \"theme\",\n \"deal\",\n \"topic\",\n \"claim\",\n \"evidence\",\n \"synthesis\",\n \"answer\",\n \"atomic_fact\",\n \"excerpt\",\n \"source\",\n \"company\",\n \"person\",\n \"investor\",\n \"function\",\n \"value_chain\",\n] as const satisfies readonly NodeType[];\n\nexport function isNodeType(value: string): value is NodeType {\n return (NODE_TYPES as readonly string[]).includes(value);\n}\n\nexport function getLayerForNodeType(type: NodeType): EpistemicLayer {\n switch (type) {\n case \"decision\":\n return \"L4\";\n case \"belief\":\n case \"question\":\n case \"theme\":\n case \"deal\":\n return \"L3\";\n case \"claim\":\n case \"evidence\":\n case \"synthesis\":\n case \"answer\":\n return \"L2\";\n case \"atomic_fact\":\n case \"excerpt\":\n case \"source\":\n return \"L1\";\n case \"topic\":\n return \"organizational\";\n case \"company\":\n case \"person\":\n case \"investor\":\n case \"function\":\n case \"value_chain\":\n return \"ontological\";\n }\n}\n\nexport function resolveKnownLayerForNodeType(\n type: string\n): EpistemicLayer | undefined {\n return isNodeType(type) ? getLayerForNodeType(type) : undefined;\n}\n\nexport function isEpistemicNodeType(type: NodeType): boolean {\n return getLayerForNodeType(type) !== \"ontological\";\n}\n"]}
|
|
@@ -2,8 +2,8 @@ import { z } from 'zod';
|
|
|
2
2
|
|
|
3
3
|
declare const ComponentTableManifestSchema: z.ZodObject<{
|
|
4
4
|
manifestVersion: z.ZodString;
|
|
5
|
-
componentName: z.ZodEnum<["kernel", "
|
|
6
|
-
tier: z.ZodEnum<["K", "
|
|
5
|
+
componentName: z.ZodEnum<["kernel", "identity"]>;
|
|
6
|
+
tier: z.ZodEnum<["K", "I"]>;
|
|
7
7
|
packageVersion: z.ZodString;
|
|
8
8
|
tables: z.ZodArray<z.ZodObject<{
|
|
9
9
|
name: z.ZodString;
|
|
@@ -41,9 +41,9 @@ declare const ComponentTableManifestSchema: z.ZodObject<{
|
|
|
41
41
|
}[];
|
|
42
42
|
}>, "many">;
|
|
43
43
|
}, "strip", z.ZodTypeAny, {
|
|
44
|
-
tier: "
|
|
44
|
+
tier: "I" | "K";
|
|
45
45
|
manifestVersion: string;
|
|
46
|
-
componentName: "kernel" | "
|
|
46
|
+
componentName: "kernel" | "identity";
|
|
47
47
|
packageVersion: string;
|
|
48
48
|
tables: {
|
|
49
49
|
name: string;
|
|
@@ -55,9 +55,9 @@ declare const ComponentTableManifestSchema: z.ZodObject<{
|
|
|
55
55
|
}[];
|
|
56
56
|
}[];
|
|
57
57
|
}, {
|
|
58
|
-
tier: "
|
|
58
|
+
tier: "I" | "K";
|
|
59
59
|
manifestVersion: string;
|
|
60
|
-
componentName: "kernel" | "
|
|
60
|
+
componentName: "kernel" | "identity";
|
|
61
61
|
packageVersion: string;
|
|
62
62
|
tables: {
|
|
63
63
|
name: string;
|
|
@@ -3,8 +3,8 @@ import { z } from 'zod';
|
|
|
3
3
|
// src/schemas/component-table-manifest.ts
|
|
4
4
|
var ComponentTableManifestSchema = z.object({
|
|
5
5
|
manifestVersion: z.string(),
|
|
6
|
-
componentName: z.enum(["kernel", "
|
|
7
|
-
tier: z.enum(["K", "
|
|
6
|
+
componentName: z.enum(["kernel", "identity"]),
|
|
7
|
+
tier: z.enum(["K", "I"]),
|
|
8
8
|
packageVersion: z.string(),
|
|
9
9
|
tables: z.array(
|
|
10
10
|
z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemas/component-table-manifest.ts"],"names":[],"mappings":";;;AAEO,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,eAAA,EAAiB,EAAE,MAAA,EAAO;AAAA,EAC1B,eAAe,CAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/component-table-manifest.ts"],"names":[],"mappings":";;;AAEO,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,eAAA,EAAiB,EAAE,MAAA,EAAO;AAAA,EAC1B,eAAe,CAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA;AAAA,EAC5C,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,EACvB,cAAA,EAAgB,EAAE,MAAA,EAAO;AAAA,EACzB,QAAQ,CAAA,CAAE,KAAA;AAAA,IACR,EAAE,MAAA,CAAO;AAAA,MACP,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,MACf,QAAQ,CAAA,CAAE,KAAA;AAAA,QACR,EAAE,MAAA,CAAO;AAAA,UACP,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,UACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,UACf,QAAA,EAAU,EAAE,OAAA,EAAQ;AAAA,UACpB,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,SAChC;AAAA;AACH,KACD;AAAA;AAEL,CAAC","file":"component-table-manifest.js","sourcesContent":["import { z } from \"zod\";\n\nexport const ComponentTableManifestSchema = z.object({\n manifestVersion: z.string(),\n componentName: z.enum([\"kernel\", \"identity\"]),\n tier: z.enum([\"K\", \"I\"]),\n packageVersion: z.string(),\n tables: z.array(\n z.object({\n name: z.string(),\n fields: z.array(\n z.object({\n name: z.string(),\n type: z.string(),\n optional: z.boolean(),\n validator: z.string().optional(),\n })\n ),\n })\n ),\n});\n\nexport type ComponentTableManifest = z.infer<\n typeof ComponentTableManifestSchema\n>;\n"]}
|
package/dist/schemas/enums.d.ts
CHANGED
|
@@ -5,11 +5,8 @@ import { z } from 'zod';
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
declare const NODE_TYPE: z.ZodEnum<["decision", "belief", "question", "theme", "deal", "topic", "claim", "evidence", "synthesis", "answer", "atomic_fact", "excerpt", "source", "company", "person", "investor", "function", "value_chain"]>;
|
|
8
|
-
declare const
|
|
9
|
-
declare const STORAGE_EDGE_TYPE_VALUES: readonly ["supports", "informs", "depends_on", "derived_from", "contains", "tests", "supersedes", "responds_to", "belongs_to", "relates_to_thesis", "works_at", "invested_in", "competes_with", "participates_in", "founded_by", "evaluates", "performs", "function_in", "impacts", "raised_from", "mentioned_in", "perspective_on", "plays_theme", "answers", "explores", "qualifies", "based_on", "based_on_belief", "based_on_question", "blocked_by_contradiction", "informed_by_theme", "same_as", "reinforces", "parent_of", "child_of", "falsified_by", "exclusive_with", "collapses_if", "cascade_from", "counterfactual_of", "cascade_to", "mutually_exclusive", "correlates_with", "amplifies", "precondition_for", "in_tension_with", "strengthened_by", "weakened_by", "alternative_to", "subsumes", "validated_by", "required_for", "blocks", "prerequisite_for", "parallel_to", "corroborates", "extends", "same_source_as", "same_theme_as", "assumes", "would_predict", "analogous_to", "independent_of", "implements", "violates", "co_changes_with", "migrating_from", "migrating_to", "scoped_by", "about_entity", "entity_referenced_in", "contradicts", "cites", "summarizes", "related_to", "partially_answers", "refines", "branches_from", "extracted_from"];
|
|
10
|
-
declare const EDGE_TYPE: z.ZodEnum<["supports", "informs", "depends_on", "derived_from", "contains", "tests", "supersedes", "responds_to", "belongs_to", "relates_to_thesis", "works_at", "invested_in", "competes_with", "participates_in", "founded_by", "evaluates", "performs", "function_in", "impacts", "raised_from", "mentioned_in", "perspective_on", "plays_theme", "answers", "explores", "qualifies", "based_on", "based_on_belief", "based_on_question", "blocked_by_contradiction", "informed_by_theme", "same_as", "reinforces", "parent_of", "child_of", "falsified_by", "exclusive_with", "collapses_if", "cascade_from", "counterfactual_of", "cascade_to", "mutually_exclusive", "correlates_with", "amplifies", "precondition_for", "in_tension_with", "strengthened_by", "weakened_by", "alternative_to", "subsumes", "validated_by", "required_for", "blocks", "prerequisite_for", "parallel_to", "corroborates", "extends", "same_source_as", "same_theme_as", "assumes", "would_predict", "analogous_to", "independent_of", "implements", "violates", "co_changes_with", "migrating_from", "migrating_to", "scoped_by", "about_entity", "entity_referenced_in", "contradicts", "cites", "summarizes", "related_to", "partially_answers", "refines", "branches_from"]>;
|
|
11
|
-
declare const STORAGE_EDGE_TYPE: z.ZodEnum<["supports", "informs", "depends_on", "derived_from", "contains", "tests", "supersedes", "responds_to", "belongs_to", "relates_to_thesis", "works_at", "invested_in", "competes_with", "participates_in", "founded_by", "evaluates", "performs", "function_in", "impacts", "raised_from", "mentioned_in", "perspective_on", "plays_theme", "answers", "explores", "qualifies", "based_on", "based_on_belief", "based_on_question", "blocked_by_contradiction", "informed_by_theme", "same_as", "reinforces", "parent_of", "child_of", "falsified_by", "exclusive_with", "collapses_if", "cascade_from", "counterfactual_of", "cascade_to", "mutually_exclusive", "correlates_with", "amplifies", "precondition_for", "in_tension_with", "strengthened_by", "weakened_by", "alternative_to", "subsumes", "validated_by", "required_for", "blocks", "prerequisite_for", "parallel_to", "corroborates", "extends", "same_source_as", "same_theme_as", "assumes", "would_predict", "analogous_to", "independent_of", "implements", "violates", "co_changes_with", "migrating_from", "migrating_to", "scoped_by", "about_entity", "entity_referenced_in", "contradicts", "cites", "summarizes", "related_to", "partially_answers", "refines", "branches_from", "extracted_from"]>;
|
|
8
|
+
declare const EDGE_TYPE: z.ZodEnum<["supports", "informs", "depends_on", "extracted_from", "contains", "tests", "supersedes", "responds_to", "belongs_to", "relates_to_thesis", "works_at", "invested_in", "competes_with", "participates_in", "founded_by", "evaluates", "performs", "function_in", "impacts", "raised_from", "mentioned_in", "perspective_on", "plays_theme", "answers", "explores", "qualifies", "based_on", "based_on_belief", "based_on_question", "blocked_by_contradiction", "informed_by_theme", "same_as", "reinforces", "parent_of", "child_of", "falsified_by", "exclusive_with", "collapses_if", "cascade_from", "counterfactual_of", "cascade_to", "mutually_exclusive", "correlates_with", "amplifies", "precondition_for", "in_tension_with", "strengthened_by", "weakened_by", "alternative_to", "subsumes", "validated_by", "required_for", "blocks", "prerequisite_for", "parallel_to", "corroborates", "extends", "same_source_as", "same_theme_as", "assumes", "would_predict", "analogous_to", "independent_of", "implements", "violates", "co_changes_with", "migrating_from", "migrating_to", "scoped_by", "about_entity", "entity_referenced_in", "contradicts", "cites", "summarizes", "related_to", "partially_answers", "refines", "branches_from"]>;
|
|
12
9
|
declare const TOPIC_STATUS: z.ZodEnum<["active", "archived", "watching"]>;
|
|
13
10
|
declare const TOPIC_VISIBILITY: z.ZodEnum<["private", "team", "firm", "external", "public"]>;
|
|
14
11
|
|
|
15
|
-
export { EDGE_TYPE,
|
|
12
|
+
export { EDGE_TYPE, NODE_TYPE, TOPIC_STATUS, TOPIC_VISIBILITY };
|
package/dist/schemas/enums.js
CHANGED
|
@@ -2,13 +2,10 @@ import { z } from 'zod';
|
|
|
2
2
|
|
|
3
3
|
// src/schemas/enums.ts
|
|
4
4
|
var NODE_TYPE = z.enum(["decision", "belief", "question", "theme", "deal", "topic", "claim", "evidence", "synthesis", "answer", "atomic_fact", "excerpt", "source", "company", "person", "investor", "function", "value_chain"]);
|
|
5
|
-
var
|
|
6
|
-
var STORAGE_EDGE_TYPE_VALUES = [...EDGE_TYPE_VALUES, "extracted_from"];
|
|
7
|
-
var EDGE_TYPE = z.enum(EDGE_TYPE_VALUES);
|
|
8
|
-
var STORAGE_EDGE_TYPE = z.enum(STORAGE_EDGE_TYPE_VALUES);
|
|
5
|
+
var EDGE_TYPE = z.enum(["supports", "informs", "depends_on", "extracted_from", "contains", "tests", "supersedes", "responds_to", "belongs_to", "relates_to_thesis", "works_at", "invested_in", "competes_with", "participates_in", "founded_by", "evaluates", "performs", "function_in", "impacts", "raised_from", "mentioned_in", "perspective_on", "plays_theme", "answers", "explores", "qualifies", "based_on", "based_on_belief", "based_on_question", "blocked_by_contradiction", "informed_by_theme", "same_as", "reinforces", "parent_of", "child_of", "falsified_by", "exclusive_with", "collapses_if", "cascade_from", "counterfactual_of", "cascade_to", "mutually_exclusive", "correlates_with", "amplifies", "precondition_for", "in_tension_with", "strengthened_by", "weakened_by", "alternative_to", "subsumes", "validated_by", "required_for", "blocks", "prerequisite_for", "parallel_to", "corroborates", "extends", "same_source_as", "same_theme_as", "assumes", "would_predict", "analogous_to", "independent_of", "implements", "violates", "co_changes_with", "migrating_from", "migrating_to", "scoped_by", "about_entity", "entity_referenced_in", "contradicts", "cites", "summarizes", "related_to", "partially_answers", "refines", "branches_from"]);
|
|
9
6
|
var TOPIC_STATUS = z.enum(["active", "archived", "watching"]);
|
|
10
7
|
var TOPIC_VISIBILITY = z.enum(["private", "team", "firm", "external", "public"]);
|
|
11
8
|
|
|
12
|
-
export { EDGE_TYPE,
|
|
9
|
+
export { EDGE_TYPE, NODE_TYPE, TOPIC_STATUS, TOPIC_VISIBILITY };
|
|
13
10
|
//# sourceMappingURL=enums.js.map
|
|
14
11
|
//# sourceMappingURL=enums.js.map
|