@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,167 +0,0 @@
|
|
|
1
|
-
// src/permit-principal-projection.contract.ts
|
|
2
|
-
var PLATFORM_ROLE_PRIORITY = {
|
|
3
|
-
platform_admin: 70,
|
|
4
|
-
tenant_admin: 60,
|
|
5
|
-
workspace_admin: 50,
|
|
6
|
-
editor: 40,
|
|
7
|
-
auditor: 30,
|
|
8
|
-
viewer: 20,
|
|
9
|
-
service_agent: 10
|
|
10
|
-
};
|
|
11
|
-
function readPermitProjectionString(value) {
|
|
12
|
-
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
13
|
-
}
|
|
14
|
-
function isActivePermitProjectionStatus(value) {
|
|
15
|
-
const status = readPermitProjectionString(value)?.toLowerCase();
|
|
16
|
-
return !status || status === "active" || status === "synced";
|
|
17
|
-
}
|
|
18
|
-
function mapPermitRoleToPlatformRole(role) {
|
|
19
|
-
switch (readPermitProjectionString(role)?.toLowerCase()) {
|
|
20
|
-
case "platform_admin":
|
|
21
|
-
return "platform_admin";
|
|
22
|
-
case "tenant_admin":
|
|
23
|
-
return "tenant_admin";
|
|
24
|
-
case "workspace_admin":
|
|
25
|
-
case "deployment_admin":
|
|
26
|
-
case "graph_admin":
|
|
27
|
-
return "workspace_admin";
|
|
28
|
-
case "editor":
|
|
29
|
-
case "workspace_member":
|
|
30
|
-
case "graph_editor":
|
|
31
|
-
case "evidence_contributor":
|
|
32
|
-
case "question_resolver":
|
|
33
|
-
case "theme_promoter":
|
|
34
|
-
case "topic_promoter":
|
|
35
|
-
return "editor";
|
|
36
|
-
case "auditor":
|
|
37
|
-
return "auditor";
|
|
38
|
-
case "viewer":
|
|
39
|
-
case "graph_viewer":
|
|
40
|
-
case "stakeholder_viewer":
|
|
41
|
-
case "stakeholder_summarizer":
|
|
42
|
-
case "source_drilldown_viewer":
|
|
43
|
-
case "restricted_data_viewer":
|
|
44
|
-
case "proprietary_data_viewer":
|
|
45
|
-
return "viewer";
|
|
46
|
-
case "service_agent":
|
|
47
|
-
case "agent_runner":
|
|
48
|
-
return "service_agent";
|
|
49
|
-
default:
|
|
50
|
-
return void 0;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function highestPlatformRole(roles) {
|
|
54
|
-
return roles.reduce(
|
|
55
|
-
(best, role) => PLATFORM_ROLE_PRIORITY[role] > PLATFORM_ROLE_PRIORITY[best] ? role : best,
|
|
56
|
-
"viewer"
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
function isClerkAliasFor(alias, clerkId) {
|
|
60
|
-
return isActivePermitProjectionStatus(alias.status) && readPermitProjectionString(alias.provider)?.toLowerCase() === "clerk" && (readPermitProjectionString(alias.providerSubjectId) === clerkId || readPermitProjectionString(alias.alias) === clerkId);
|
|
61
|
-
}
|
|
62
|
-
function isHumanPermitPrincipal(principal) {
|
|
63
|
-
const principalType = readPermitProjectionString(principal.principalType)?.toLowerCase();
|
|
64
|
-
return !principalType || principalType === "human" || principalType === "user";
|
|
65
|
-
}
|
|
66
|
-
function emailFromAlias(aliases, principal) {
|
|
67
|
-
return aliases.find(
|
|
68
|
-
(alias) => readPermitProjectionString(alias.aliasKind)?.toLowerCase() === "email"
|
|
69
|
-
)?.alias ?? readPermitProjectionString(principal.metadata?.email);
|
|
70
|
-
}
|
|
71
|
-
function groupIdsForPrincipal(memberships, principal) {
|
|
72
|
-
const principalId = readPermitProjectionString(principal.principalId);
|
|
73
|
-
if (!principalId) return [];
|
|
74
|
-
return [
|
|
75
|
-
...new Set(
|
|
76
|
-
memberships.filter(
|
|
77
|
-
(membership) => isActivePermitProjectionStatus(membership.status) && readPermitProjectionString(membership.tenantId) === readPermitProjectionString(principal.tenantId) && readPermitProjectionString(membership.memberType) === "principal" && (readPermitProjectionString(membership.memberId) === principalId || readPermitProjectionString(membership.principalId) === principalId)
|
|
78
|
-
).map((membership) => readPermitProjectionString(membership.groupId)).filter((groupId) => Boolean(groupId))
|
|
79
|
-
)
|
|
80
|
-
];
|
|
81
|
-
}
|
|
82
|
-
function rolesForPrincipal(assignments, principal, groupIds) {
|
|
83
|
-
const principalId = readPermitProjectionString(principal.principalId);
|
|
84
|
-
const tenantId = readPermitProjectionString(principal.tenantId);
|
|
85
|
-
const roles = assignments.filter(
|
|
86
|
-
(assignment) => isActivePermitProjectionStatus(assignment.status) && readPermitProjectionString(assignment.tenantId) === tenantId && (readPermitProjectionString(assignment.targetType) === "principal" && readPermitProjectionString(assignment.targetId) === principalId || readPermitProjectionString(assignment.targetType) === "group" && groupIds.includes(
|
|
87
|
-
readPermitProjectionString(assignment.targetId) ?? ""
|
|
88
|
-
))
|
|
89
|
-
).map((assignment) => mapPermitRoleToPlatformRole(assignment.role)).filter((role) => Boolean(role));
|
|
90
|
-
if (readPermitProjectionString(principal.principalType) === "agent" || readPermitProjectionString(principal.principalType) === "service_principal") {
|
|
91
|
-
roles.push("service_agent");
|
|
92
|
-
}
|
|
93
|
-
return [...new Set(roles)];
|
|
94
|
-
}
|
|
95
|
-
function workspaceFromPermitProjection(principal, alias, assignments) {
|
|
96
|
-
return readPermitProjectionString(principal.workspaceId) ?? readPermitProjectionString(alias?.workspaceId) ?? readPermitProjectionString(
|
|
97
|
-
assignments.find(
|
|
98
|
-
(assignment) => readPermitProjectionString(assignment.targetId) === readPermitProjectionString(principal.principalId) && readPermitProjectionString(assignment.resourceType) === "workspace"
|
|
99
|
-
)?.resourceKey
|
|
100
|
-
) ?? readPermitProjectionString(
|
|
101
|
-
assignments.find((assignment) => assignment.workspaceId)?.workspaceId
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
function buildProjectedUserFromPermitPrincipal(rows, principal, matchingAlias, now = Date.now()) {
|
|
105
|
-
const principalId = readPermitProjectionString(principal.principalId);
|
|
106
|
-
const tenantId = readPermitProjectionString(principal.tenantId);
|
|
107
|
-
if (!principalId || !tenantId || !isActivePermitProjectionStatus(principal.status)) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
const aliases = rows.aliases.filter(
|
|
111
|
-
(alias2) => readPermitProjectionString(alias2.tenantId) === tenantId && readPermitProjectionString(alias2.principalId) === principalId && isActivePermitProjectionStatus(alias2.status)
|
|
112
|
-
);
|
|
113
|
-
const groupIds = groupIdsForPrincipal(rows.groupMemberships, principal);
|
|
114
|
-
const roles = rolesForPrincipal(rows.roleAssignments, principal, groupIds);
|
|
115
|
-
if (roles.length === 0) {
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
const alias = matchingAlias ?? aliases[0];
|
|
119
|
-
const clerkId = readPermitProjectionString(
|
|
120
|
-
aliases.find(
|
|
121
|
-
(entry) => readPermitProjectionString(entry.provider)?.toLowerCase() === "clerk"
|
|
122
|
-
)?.providerSubjectId
|
|
123
|
-
) ?? principalId;
|
|
124
|
-
if (isHumanPermitPrincipal(principal) && principalId !== clerkId) {
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
clerkId,
|
|
129
|
-
email: emailFromAlias(aliases, principal) ?? `${principalId}@permit.local`,
|
|
130
|
-
name: readPermitProjectionString(principal.displayName),
|
|
131
|
-
lastSeenAt: principal.lastSeenAt ?? principal.updatedAt ?? now,
|
|
132
|
-
chatCount: 0,
|
|
133
|
-
messageCount: 0,
|
|
134
|
-
mcRole: highestPlatformRole(roles),
|
|
135
|
-
mcRoleSyncedAt: principal.updatedAt ?? now,
|
|
136
|
-
defaultTenantId: tenantId,
|
|
137
|
-
defaultWorkspaceId: workspaceFromPermitProjection(principal, alias, rows.roleAssignments) ?? tenantId,
|
|
138
|
-
defaultPrincipalId: principalId,
|
|
139
|
-
principalGroupIds: groupIds,
|
|
140
|
-
governanceGrantsSyncedAt: principal.updatedAt ?? now,
|
|
141
|
-
createdAt: principal.createdAt ?? now,
|
|
142
|
-
updatedAt: principal.updatedAt ?? now
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
function findProjectedUserByPermitPrincipalId(rows, principalId, now = Date.now()) {
|
|
146
|
-
const normalizedPrincipalId = principalId.trim();
|
|
147
|
-
const principal = rows.principals.find(
|
|
148
|
-
(row) => isActivePermitProjectionStatus(row.status) && readPermitProjectionString(row.principalId) === normalizedPrincipalId
|
|
149
|
-
);
|
|
150
|
-
return principal ? buildProjectedUserFromPermitPrincipal(rows, principal, void 0, now) : null;
|
|
151
|
-
}
|
|
152
|
-
function findProjectedUserByPermitClerkId(rows, clerkId, now = Date.now()) {
|
|
153
|
-
const normalizedClerkId = clerkId.trim();
|
|
154
|
-
const matchingAlias = rows.aliases.find(
|
|
155
|
-
(alias) => isClerkAliasFor(alias, normalizedClerkId)
|
|
156
|
-
);
|
|
157
|
-
const principal = matchingAlias ? rows.principals.find(
|
|
158
|
-
(row) => readPermitProjectionString(row.tenantId) === readPermitProjectionString(matchingAlias.tenantId) && readPermitProjectionString(row.principalId) === readPermitProjectionString(matchingAlias.principalId)
|
|
159
|
-
) : rows.principals.find(
|
|
160
|
-
(row) => readPermitProjectionString(row.principalId) === normalizedClerkId
|
|
161
|
-
);
|
|
162
|
-
return principal ? buildProjectedUserFromPermitPrincipal(rows, principal, matchingAlias, now) : null;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export { buildProjectedUserFromPermitPrincipal, findProjectedUserByPermitClerkId, findProjectedUserByPermitPrincipalId, isActivePermitProjectionStatus, mapPermitRoleToPlatformRole, readPermitProjectionString };
|
|
166
|
-
//# sourceMappingURL=permit-principal-projection.contract.js.map
|
|
167
|
-
//# sourceMappingURL=permit-principal-projection.contract.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/permit-principal-projection.contract.ts"],"names":["alias"],"mappings":"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","file":"permit-principal-projection.contract.js","sourcesContent":["export type PermitProjectionPlatformRole =\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n\nexport type PermitPrincipalProjection = Record<string, unknown> & {\n principalId?: string;\n tenantId?: string;\n workspaceId?: string;\n principalType?: string;\n status?: string;\n displayName?: string;\n metadata?: Record<string, unknown>;\n createdAt?: number;\n updatedAt?: number;\n lastSeenAt?: number;\n};\n\nexport type PermitAliasProjection = Record<string, unknown> & {\n principalId?: string;\n tenantId?: string;\n workspaceId?: string;\n provider?: string;\n providerSubjectId?: string;\n alias?: string;\n aliasKind?: string;\n status?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type PermitRoleAssignmentProjection = Record<string, unknown> & {\n tenantId?: string;\n workspaceId?: string;\n role?: string;\n targetType?: string;\n targetId?: string;\n resourceType?: string;\n resourceKey?: string;\n status?: string;\n};\n\nexport type PermitGroupMembershipProjection = Record<string, unknown> & {\n tenantId?: string;\n workspaceId?: string;\n groupId?: string;\n memberType?: string;\n memberId?: string;\n principalId?: string;\n status?: string;\n};\n\nexport type PermitProjectedUserRecord = {\n clerkId: string;\n email: string;\n name?: string;\n lastSeenAt: number;\n chatCount: number;\n messageCount: number;\n mcRole: PermitProjectionPlatformRole;\n mcRoleSyncedAt: number;\n defaultTenantId: string;\n defaultWorkspaceId: string;\n defaultPrincipalId: string;\n principalGroupIds: string[];\n governanceGrantsSyncedAt: number;\n createdAt: number;\n updatedAt: number;\n};\n\nexport type PermitProjectionRows = {\n principals: PermitPrincipalProjection[];\n aliases: PermitAliasProjection[];\n roleAssignments: PermitRoleAssignmentProjection[];\n groupMemberships: PermitGroupMembershipProjection[];\n};\n\nconst PLATFORM_ROLE_PRIORITY: Record<PermitProjectionPlatformRole, number> = {\n platform_admin: 70,\n tenant_admin: 60,\n workspace_admin: 50,\n editor: 40,\n auditor: 30,\n viewer: 20,\n service_agent: 10,\n};\n\nexport function readPermitProjectionString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nexport function isActivePermitProjectionStatus(value: unknown): boolean {\n const status = readPermitProjectionString(value)?.toLowerCase();\n return !status || status === \"active\" || status === \"synced\";\n}\n\nexport function mapPermitRoleToPlatformRole(\n role: unknown,\n): PermitProjectionPlatformRole | undefined {\n switch (readPermitProjectionString(role)?.toLowerCase()) {\n case \"platform_admin\":\n return \"platform_admin\";\n case \"tenant_admin\":\n return \"tenant_admin\";\n case \"workspace_admin\":\n case \"deployment_admin\":\n case \"graph_admin\":\n return \"workspace_admin\";\n case \"editor\":\n case \"workspace_member\":\n case \"graph_editor\":\n case \"evidence_contributor\":\n case \"question_resolver\":\n case \"theme_promoter\":\n case \"topic_promoter\":\n return \"editor\";\n case \"auditor\":\n return \"auditor\";\n case \"viewer\":\n case \"graph_viewer\":\n case \"stakeholder_viewer\":\n case \"stakeholder_summarizer\":\n case \"source_drilldown_viewer\":\n case \"restricted_data_viewer\":\n case \"proprietary_data_viewer\":\n return \"viewer\";\n case \"service_agent\":\n case \"agent_runner\":\n return \"service_agent\";\n default:\n return undefined;\n }\n}\n\nfunction highestPlatformRole(\n roles: PermitProjectionPlatformRole[],\n): PermitProjectionPlatformRole {\n return roles.reduce<PermitProjectionPlatformRole>(\n (best, role) =>\n PLATFORM_ROLE_PRIORITY[role] > PLATFORM_ROLE_PRIORITY[best] ? role : best,\n \"viewer\",\n );\n}\n\nfunction isClerkAliasFor(\n alias: PermitAliasProjection,\n clerkId: string,\n): boolean {\n return (\n isActivePermitProjectionStatus(alias.status) &&\n readPermitProjectionString(alias.provider)?.toLowerCase() === \"clerk\" &&\n (readPermitProjectionString(alias.providerSubjectId) === clerkId ||\n readPermitProjectionString(alias.alias) === clerkId)\n );\n}\n\nfunction isHumanPermitPrincipal(principal: PermitPrincipalProjection): boolean {\n const principalType =\n readPermitProjectionString(principal.principalType)?.toLowerCase();\n return !principalType || principalType === \"human\" || principalType === \"user\";\n}\n\nfunction emailFromAlias(\n aliases: PermitAliasProjection[],\n principal: PermitPrincipalProjection,\n): string | undefined {\n return (\n aliases.find(\n (alias) =>\n readPermitProjectionString(alias.aliasKind)?.toLowerCase() === \"email\",\n )?.alias ?? readPermitProjectionString(principal.metadata?.email)\n );\n}\n\nfunction groupIdsForPrincipal(\n memberships: PermitGroupMembershipProjection[],\n principal: PermitPrincipalProjection,\n): string[] {\n const principalId = readPermitProjectionString(principal.principalId);\n if (!principalId) return [];\n return [\n ...new Set(\n memberships\n .filter(\n (membership) =>\n isActivePermitProjectionStatus(membership.status) &&\n readPermitProjectionString(membership.tenantId) ===\n readPermitProjectionString(principal.tenantId) &&\n readPermitProjectionString(membership.memberType) === \"principal\" &&\n (readPermitProjectionString(membership.memberId) === principalId ||\n readPermitProjectionString(membership.principalId) ===\n principalId),\n )\n .map((membership) => readPermitProjectionString(membership.groupId))\n .filter((groupId): groupId is string => Boolean(groupId)),\n ),\n ];\n}\n\nfunction rolesForPrincipal(\n assignments: PermitRoleAssignmentProjection[],\n principal: PermitPrincipalProjection,\n groupIds: string[],\n): PermitProjectionPlatformRole[] {\n const principalId = readPermitProjectionString(principal.principalId);\n const tenantId = readPermitProjectionString(principal.tenantId);\n const roles = assignments\n .filter(\n (assignment) =>\n isActivePermitProjectionStatus(assignment.status) &&\n readPermitProjectionString(assignment.tenantId) === tenantId &&\n ((readPermitProjectionString(assignment.targetType) === \"principal\" &&\n readPermitProjectionString(assignment.targetId) === principalId) ||\n (readPermitProjectionString(assignment.targetType) === \"group\" &&\n groupIds.includes(\n readPermitProjectionString(assignment.targetId) ?? \"\",\n ))),\n )\n .map((assignment) => mapPermitRoleToPlatformRole(assignment.role))\n .filter((role): role is PermitProjectionPlatformRole => Boolean(role));\n\n if (\n readPermitProjectionString(principal.principalType) === \"agent\" ||\n readPermitProjectionString(principal.principalType) === \"service_principal\"\n ) {\n roles.push(\"service_agent\");\n }\n\n return [...new Set(roles)];\n}\n\nfunction workspaceFromPermitProjection(\n principal: PermitPrincipalProjection,\n alias: PermitAliasProjection | undefined,\n assignments: PermitRoleAssignmentProjection[],\n): string | undefined {\n return (\n readPermitProjectionString(principal.workspaceId) ??\n readPermitProjectionString(alias?.workspaceId) ??\n readPermitProjectionString(\n assignments.find(\n (assignment) =>\n readPermitProjectionString(assignment.targetId) ===\n readPermitProjectionString(principal.principalId) &&\n readPermitProjectionString(assignment.resourceType) === \"workspace\",\n )?.resourceKey,\n ) ??\n readPermitProjectionString(\n assignments.find((assignment) => assignment.workspaceId)?.workspaceId,\n )\n );\n}\n\nexport function buildProjectedUserFromPermitPrincipal(\n rows: PermitProjectionRows,\n principal: PermitPrincipalProjection,\n matchingAlias?: PermitAliasProjection,\n now = Date.now(),\n): PermitProjectedUserRecord | null {\n const principalId = readPermitProjectionString(principal.principalId);\n const tenantId = readPermitProjectionString(principal.tenantId);\n if (\n !principalId ||\n !tenantId ||\n !isActivePermitProjectionStatus(principal.status)\n ) {\n return null;\n }\n\n const aliases = rows.aliases.filter(\n (alias) =>\n readPermitProjectionString(alias.tenantId) === tenantId &&\n readPermitProjectionString(alias.principalId) === principalId &&\n isActivePermitProjectionStatus(alias.status),\n );\n const groupIds = groupIdsForPrincipal(rows.groupMemberships, principal);\n const roles = rolesForPrincipal(rows.roleAssignments, principal, groupIds);\n if (roles.length === 0) {\n return null;\n }\n\n const alias = matchingAlias ?? aliases[0];\n const clerkId =\n readPermitProjectionString(\n aliases.find(\n (entry) =>\n readPermitProjectionString(entry.provider)?.toLowerCase() === \"clerk\",\n )?.providerSubjectId,\n ) ?? principalId;\n if (isHumanPermitPrincipal(principal) && principalId !== clerkId) {\n return null;\n }\n\n return {\n clerkId,\n email: emailFromAlias(aliases, principal) ?? `${principalId}@permit.local`,\n name: readPermitProjectionString(principal.displayName),\n lastSeenAt: principal.lastSeenAt ?? principal.updatedAt ?? now,\n chatCount: 0,\n messageCount: 0,\n mcRole: highestPlatformRole(roles),\n mcRoleSyncedAt: principal.updatedAt ?? now,\n defaultTenantId: tenantId,\n defaultWorkspaceId:\n workspaceFromPermitProjection(principal, alias, rows.roleAssignments) ??\n tenantId,\n defaultPrincipalId: principalId,\n principalGroupIds: groupIds,\n governanceGrantsSyncedAt: principal.updatedAt ?? now,\n createdAt: principal.createdAt ?? now,\n updatedAt: principal.updatedAt ?? now,\n };\n}\n\nexport function findProjectedUserByPermitPrincipalId(\n rows: PermitProjectionRows,\n principalId: string,\n now = Date.now(),\n): PermitProjectedUserRecord | null {\n const normalizedPrincipalId = principalId.trim();\n const principal = rows.principals.find(\n (row) =>\n isActivePermitProjectionStatus(row.status) &&\n readPermitProjectionString(row.principalId) === normalizedPrincipalId,\n );\n return principal\n ? buildProjectedUserFromPermitPrincipal(rows, principal, undefined, now)\n : null;\n}\n\nexport function findProjectedUserByPermitClerkId(\n rows: PermitProjectionRows,\n clerkId: string,\n now = Date.now(),\n): PermitProjectedUserRecord | null {\n const normalizedClerkId = clerkId.trim();\n const matchingAlias = rows.aliases.find((alias) =>\n isClerkAliasFor(alias, normalizedClerkId),\n );\n const principal = matchingAlias\n ? rows.principals.find(\n (row) =>\n readPermitProjectionString(row.tenantId) ===\n readPermitProjectionString(matchingAlias.tenantId) &&\n readPermitProjectionString(row.principalId) ===\n readPermitProjectionString(matchingAlias.principalId),\n )\n : rows.principals.find(\n (row) =>\n readPermitProjectionString(row.principalId) === normalizedClerkId,\n );\n return principal\n ? buildProjectedUserFromPermitPrincipal(rows, principal, matchingAlias, now)\n : null;\n}\n"]}
|
|
@@ -1,403 +0,0 @@
|
|
|
1
|
-
import { v } from 'convex/values';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
|
|
4
|
-
// src/projections/create-evidence.projection.ts
|
|
5
|
-
|
|
6
|
-
// src/projections/projection-dsl.ts
|
|
7
|
-
function defineProjection(def) {
|
|
8
|
-
return def;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// src/projections/create-evidence.projection.ts
|
|
12
|
-
var jsonRecordSchema = z.record(z.unknown());
|
|
13
|
-
var createEvidenceInputSchemaBase = z.object({
|
|
14
|
-
projectId: z.string().optional(),
|
|
15
|
-
topicId: z.string().optional(),
|
|
16
|
-
text: z.string().optional(),
|
|
17
|
-
canonicalText: z.string().optional(),
|
|
18
|
-
title: z.string().optional(),
|
|
19
|
-
content: z.string().optional(),
|
|
20
|
-
contentType: z.string().optional(),
|
|
21
|
-
kind: z.string().optional(),
|
|
22
|
-
tags: z.array(z.string()).optional(),
|
|
23
|
-
source: z.string().optional(),
|
|
24
|
-
sourceUrl: z.string().optional(),
|
|
25
|
-
sourceType: z.string().optional(),
|
|
26
|
-
externalSourceType: z.string().optional(),
|
|
27
|
-
sourceQuestionId: z.string().optional(),
|
|
28
|
-
methodology: z.string().optional(),
|
|
29
|
-
informationAsymmetry: z.string().optional(),
|
|
30
|
-
sourceDescription: z.string().optional(),
|
|
31
|
-
targetId: z.string().optional(),
|
|
32
|
-
targetNodeId: z.string().optional(),
|
|
33
|
-
linkedBeliefNodeId: z.string().optional(),
|
|
34
|
-
evidenceRelation: z.enum(["supports", "contradicts"]).optional(),
|
|
35
|
-
confidence: z.number().optional(),
|
|
36
|
-
weight: z.number().optional(),
|
|
37
|
-
reasoning: z.string().optional(),
|
|
38
|
-
rationale: z.string(),
|
|
39
|
-
metadata: jsonRecordSchema.optional(),
|
|
40
|
-
trustedBypassAccessCheck: z.boolean().optional()
|
|
41
|
-
}).passthrough();
|
|
42
|
-
var createEvidenceInputSchema = createEvidenceInputSchemaBase.refine(
|
|
43
|
-
(input) => Boolean(input.text ?? input.canonicalText),
|
|
44
|
-
{
|
|
45
|
-
message: "create_evidence requires text",
|
|
46
|
-
path: ["text"]
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
function compactRecord(input) {
|
|
50
|
-
return Object.fromEntries(
|
|
51
|
-
Object.entries(input).filter(([, value]) => value !== void 0)
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
function isRecord(value) {
|
|
55
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
56
|
-
}
|
|
57
|
-
function recordValue(value) {
|
|
58
|
-
return isRecord(value) ? value : {};
|
|
59
|
-
}
|
|
60
|
-
var createEvidenceProjection = defineProjection({
|
|
61
|
-
contractName: "create_evidence",
|
|
62
|
-
inputSchema: createEvidenceInputSchema,
|
|
63
|
-
project: (input) => {
|
|
64
|
-
const text = input.text ?? input.canonicalText;
|
|
65
|
-
const weight = typeof input.weight === "number" ? input.weight : void 0;
|
|
66
|
-
return compactRecord({
|
|
67
|
-
projectId: input.projectId,
|
|
68
|
-
topicId: input.topicId,
|
|
69
|
-
text,
|
|
70
|
-
title: input.title ?? text,
|
|
71
|
-
content: input.content ?? text,
|
|
72
|
-
contentType: input.contentType,
|
|
73
|
-
kind: input.kind,
|
|
74
|
-
tags: input.tags,
|
|
75
|
-
sourceType: input.sourceType,
|
|
76
|
-
externalSourceType: input.externalSourceType,
|
|
77
|
-
sourceUrl: input.sourceUrl ?? input.source,
|
|
78
|
-
sourceQuestionId: input.sourceQuestionId,
|
|
79
|
-
methodology: input.methodology,
|
|
80
|
-
informationAsymmetry: input.informationAsymmetry,
|
|
81
|
-
sourceDescription: input.sourceDescription,
|
|
82
|
-
metadata: compactRecord({
|
|
83
|
-
...recordValue(input.metadata),
|
|
84
|
-
source: input.source,
|
|
85
|
-
targetId: input.targetId,
|
|
86
|
-
targetNodeId: input.targetNodeId,
|
|
87
|
-
weight,
|
|
88
|
-
reasoning: input.reasoning,
|
|
89
|
-
rationale: input.rationale
|
|
90
|
-
}),
|
|
91
|
-
linkedBeliefNodeId: input.linkedBeliefNodeId ?? input.targetNodeId ?? input.targetId,
|
|
92
|
-
evidenceRelation: input.evidenceRelation ?? (weight === void 0 ? void 0 : weight < 0 ? "contradicts" : "supports"),
|
|
93
|
-
confidence: input.confidence ?? (weight === void 0 ? void 0 : Math.min(1, Math.max(0, Math.abs(weight)))),
|
|
94
|
-
rationale: input.rationale,
|
|
95
|
-
trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
|
|
96
|
-
});
|
|
97
|
-
},
|
|
98
|
-
convexArgsValidator: v.object({
|
|
99
|
-
projectId: v.optional(v.string()),
|
|
100
|
-
topicId: v.optional(v.string()),
|
|
101
|
-
text: v.string(),
|
|
102
|
-
title: v.optional(v.string()),
|
|
103
|
-
content: v.optional(v.string()),
|
|
104
|
-
contentType: v.optional(v.string()),
|
|
105
|
-
kind: v.optional(v.string()),
|
|
106
|
-
tags: v.optional(v.array(v.string())),
|
|
107
|
-
sourceType: v.optional(v.string()),
|
|
108
|
-
externalSourceType: v.optional(v.string()),
|
|
109
|
-
sourceUrl: v.optional(v.string()),
|
|
110
|
-
sourceQuestionId: v.optional(v.string()),
|
|
111
|
-
methodology: v.optional(v.string()),
|
|
112
|
-
informationAsymmetry: v.optional(v.string()),
|
|
113
|
-
sourceDescription: v.optional(v.string()),
|
|
114
|
-
metadata: v.optional(v.record(v.string(), v.any())),
|
|
115
|
-
linkedBeliefNodeId: v.optional(v.string()),
|
|
116
|
-
evidenceRelation: v.optional(
|
|
117
|
-
v.union(
|
|
118
|
-
v.literal("supports"),
|
|
119
|
-
v.literal("contradicts")
|
|
120
|
-
)
|
|
121
|
-
),
|
|
122
|
-
confidence: v.optional(v.number()),
|
|
123
|
-
rationale: v.string(),
|
|
124
|
-
trustedBypassAccessCheck: v.optional(v.boolean())
|
|
125
|
-
})
|
|
126
|
-
});
|
|
127
|
-
var beliefStatusSchema = z.enum(["active", "superseded", "archived", "unscored", "scored"]).optional().describe("Filter by belief lifecycle or scoring status");
|
|
128
|
-
var listBeliefsInputSchema = z.object({
|
|
129
|
-
topicId: z.string().describe("Topic scope"),
|
|
130
|
-
worktreeId: z.string().optional().describe("Filter to worktree scope"),
|
|
131
|
-
status: beliefStatusSchema,
|
|
132
|
-
minConfidence: z.number().optional().describe("Minimum confidence threshold"),
|
|
133
|
-
limit: z.number().optional().describe("Maximum results"),
|
|
134
|
-
includeEdgeAssociated: z.boolean().optional().describe("Include beliefs associated to the topic through edges")
|
|
135
|
-
});
|
|
136
|
-
function kernelStatus(status) {
|
|
137
|
-
return status === "active" || status === "superseded" || status === "archived" ? status : void 0;
|
|
138
|
-
}
|
|
139
|
-
function compactRecord2(input) {
|
|
140
|
-
return Object.fromEntries(
|
|
141
|
-
Object.entries(input).filter(([, value]) => value !== void 0)
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
var listBeliefsProjection = defineProjection({
|
|
145
|
-
contractName: "list_beliefs",
|
|
146
|
-
inputSchema: listBeliefsInputSchema,
|
|
147
|
-
project: (input) => compactRecord2({
|
|
148
|
-
topicId: input.topicId,
|
|
149
|
-
status: kernelStatus(input.status),
|
|
150
|
-
limit: input.limit,
|
|
151
|
-
includeEdgeAssociated: input.includeEdgeAssociated
|
|
152
|
-
}),
|
|
153
|
-
convexArgsValidator: v.object({
|
|
154
|
-
topicId: v.string(),
|
|
155
|
-
status: v.optional(
|
|
156
|
-
v.union(
|
|
157
|
-
v.literal("active"),
|
|
158
|
-
v.literal("superseded"),
|
|
159
|
-
v.literal("archived")
|
|
160
|
-
)
|
|
161
|
-
),
|
|
162
|
-
limit: v.optional(v.number()),
|
|
163
|
-
includeEdgeAssociated: v.optional(v.boolean())
|
|
164
|
-
})
|
|
165
|
-
});
|
|
166
|
-
var taskStatusSchema = z.enum(["todo", "in_progress", "blocked", "done"]).optional().describe("Filter by task status");
|
|
167
|
-
var listTasksInputSchema = z.object({
|
|
168
|
-
topicId: z.string().optional().describe("Topic scope"),
|
|
169
|
-
worktreeId: z.string().optional().describe("Alias for linkedWorktreeId"),
|
|
170
|
-
linkedWorktreeId: z.string().optional().describe("Filter to tasks linked to this worktree"),
|
|
171
|
-
status: taskStatusSchema,
|
|
172
|
-
limit: z.number().optional().describe("Maximum results")
|
|
173
|
-
}).refine(
|
|
174
|
-
(input) => Boolean(input.topicId || input.worktreeId || input.linkedWorktreeId),
|
|
175
|
-
{
|
|
176
|
-
message: "topicId or worktreeId is required"
|
|
177
|
-
}
|
|
178
|
-
);
|
|
179
|
-
function compactRecord3(input) {
|
|
180
|
-
return Object.fromEntries(
|
|
181
|
-
Object.entries(input).filter(([, value]) => value !== void 0)
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
var listTasksProjection = defineProjection({
|
|
185
|
-
contractName: "list_tasks",
|
|
186
|
-
inputSchema: listTasksInputSchema,
|
|
187
|
-
project: (input) => compactRecord3({
|
|
188
|
-
topicId: input.topicId,
|
|
189
|
-
status: input.status,
|
|
190
|
-
userId: void 0,
|
|
191
|
-
limit: input.limit,
|
|
192
|
-
linkedWorktreeId: input.linkedWorktreeId ?? input.worktreeId
|
|
193
|
-
}),
|
|
194
|
-
convexArgsValidator: v.object({
|
|
195
|
-
topicId: v.optional(v.string()),
|
|
196
|
-
status: v.optional(
|
|
197
|
-
v.union(
|
|
198
|
-
v.literal("todo"),
|
|
199
|
-
v.literal("in_progress"),
|
|
200
|
-
v.literal("blocked"),
|
|
201
|
-
v.literal("done")
|
|
202
|
-
)
|
|
203
|
-
),
|
|
204
|
-
limit: v.optional(v.number()),
|
|
205
|
-
linkedWorktreeId: v.optional(v.string())
|
|
206
|
-
})
|
|
207
|
-
});
|
|
208
|
-
var confidenceTriggerSchema = z.enum([
|
|
209
|
-
"evidence_added",
|
|
210
|
-
"evidence_removed",
|
|
211
|
-
"contradiction_resolved",
|
|
212
|
-
"agent_assessment",
|
|
213
|
-
"worktree_outcome",
|
|
214
|
-
"worktree_completed",
|
|
215
|
-
"contradiction_detected",
|
|
216
|
-
"answer_recorded",
|
|
217
|
-
"fusion",
|
|
218
|
-
"discount",
|
|
219
|
-
"deduction",
|
|
220
|
-
"backfill_synthetic"
|
|
221
|
-
]);
|
|
222
|
-
var provenanceSchema = z.object({
|
|
223
|
-
evidence: z.string().optional(),
|
|
224
|
-
question: z.string().optional(),
|
|
225
|
-
answer: z.string().optional(),
|
|
226
|
-
contradiction: z.string().optional(),
|
|
227
|
-
worktree: z.string().optional()
|
|
228
|
-
});
|
|
229
|
-
var slOpinionProjectionSchema = z.object({
|
|
230
|
-
belief: z.number(),
|
|
231
|
-
disbelief: z.number(),
|
|
232
|
-
uncertainty: z.number(),
|
|
233
|
-
baseRate: z.number()
|
|
234
|
-
});
|
|
235
|
-
var modulateConfidenceInputObjectSchema = z.object({
|
|
236
|
-
nodeId: z.string().optional(),
|
|
237
|
-
beliefNodeId: z.string().optional(),
|
|
238
|
-
worktreeId: z.string().optional(),
|
|
239
|
-
opinion: slOpinionProjectionSchema.optional(),
|
|
240
|
-
belief: z.number().optional(),
|
|
241
|
-
disbelief: z.number().optional(),
|
|
242
|
-
uncertainty: z.number().optional(),
|
|
243
|
-
baseRate: z.number().optional(),
|
|
244
|
-
trigger: confidenceTriggerSchema,
|
|
245
|
-
provenance: provenanceSchema.optional(),
|
|
246
|
-
triggeringEvidenceId: z.string().optional(),
|
|
247
|
-
triggeringQuestionId: z.string().optional(),
|
|
248
|
-
triggeringAnswerId: z.string().optional(),
|
|
249
|
-
triggeringContradictionId: z.string().optional(),
|
|
250
|
-
triggeringWorktreeId: z.string().optional(),
|
|
251
|
-
rationale: z.string(),
|
|
252
|
-
trustedBypassAccessCheck: z.boolean().optional()
|
|
253
|
-
});
|
|
254
|
-
var modulateConfidenceInputSchema = modulateConfidenceInputObjectSchema.superRefine((input, ctx) => {
|
|
255
|
-
if (hasProvenance(input)) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
ctx.addIssue({
|
|
259
|
-
code: z.ZodIssueCode.custom,
|
|
260
|
-
message: "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance",
|
|
261
|
-
path: ["provenance"]
|
|
262
|
-
});
|
|
263
|
-
});
|
|
264
|
-
var modulateConfidenceProjection = defineProjection({
|
|
265
|
-
contractName: "modulate_confidence",
|
|
266
|
-
inputSchema: modulateConfidenceInputSchema,
|
|
267
|
-
project: (input) => {
|
|
268
|
-
const nodeId = input.beliefNodeId ?? input.nodeId;
|
|
269
|
-
if (!nodeId) {
|
|
270
|
-
throw new Error("modulate_confidence requires beliefNodeId or nodeId");
|
|
271
|
-
}
|
|
272
|
-
const opinion = input.opinion ?? {
|
|
273
|
-
belief: requireNumber(input.belief, "belief"),
|
|
274
|
-
disbelief: requireNumber(input.disbelief, "disbelief"),
|
|
275
|
-
uncertainty: requireNumber(input.uncertainty, "uncertainty"),
|
|
276
|
-
baseRate: requireNumber(input.baseRate, "baseRate")
|
|
277
|
-
};
|
|
278
|
-
assertProvenance(input);
|
|
279
|
-
return {
|
|
280
|
-
nodeId,
|
|
281
|
-
worktreeId: input.worktreeId,
|
|
282
|
-
belief: opinion.belief,
|
|
283
|
-
disbelief: opinion.disbelief,
|
|
284
|
-
uncertainty: opinion.uncertainty,
|
|
285
|
-
baseRate: opinion.baseRate,
|
|
286
|
-
trigger: input.trigger === "answer_recorded" ? "agent_assessment" : input.trigger,
|
|
287
|
-
triggeringEvidenceId: input.provenance?.evidence ?? input.triggeringEvidenceId,
|
|
288
|
-
triggeringQuestionId: input.provenance?.question ?? input.triggeringQuestionId,
|
|
289
|
-
triggeringAnswerId: input.provenance?.answer ?? input.triggeringAnswerId,
|
|
290
|
-
triggeringContradictionId: input.provenance?.contradiction ?? input.triggeringContradictionId,
|
|
291
|
-
triggeringWorktreeId: input.provenance?.worktree ?? input.triggeringWorktreeId,
|
|
292
|
-
rationale: input.rationale,
|
|
293
|
-
trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
|
|
294
|
-
};
|
|
295
|
-
},
|
|
296
|
-
convexArgsValidator: v.object({
|
|
297
|
-
nodeId: v.string(),
|
|
298
|
-
worktreeId: v.optional(v.string()),
|
|
299
|
-
belief: v.number(),
|
|
300
|
-
disbelief: v.number(),
|
|
301
|
-
uncertainty: v.number(),
|
|
302
|
-
baseRate: v.number(),
|
|
303
|
-
trigger: v.union(
|
|
304
|
-
v.literal("evidence_added"),
|
|
305
|
-
v.literal("evidence_removed"),
|
|
306
|
-
v.literal("worktree_completed"),
|
|
307
|
-
v.literal("contradiction_detected"),
|
|
308
|
-
v.literal("contradiction_resolved"),
|
|
309
|
-
v.literal("agent_assessment"),
|
|
310
|
-
v.literal("worktree_outcome"),
|
|
311
|
-
v.literal("fusion"),
|
|
312
|
-
v.literal("discount"),
|
|
313
|
-
v.literal("deduction"),
|
|
314
|
-
v.literal("backfill_synthetic")
|
|
315
|
-
),
|
|
316
|
-
triggeringEvidenceId: v.optional(v.string()),
|
|
317
|
-
triggeringQuestionId: v.optional(v.string()),
|
|
318
|
-
triggeringAnswerId: v.optional(v.string()),
|
|
319
|
-
triggeringContradictionId: v.optional(v.string()),
|
|
320
|
-
triggeringWorktreeId: v.optional(v.string()),
|
|
321
|
-
rationale: v.string(),
|
|
322
|
-
trustedBypassAccessCheck: v.optional(v.boolean())
|
|
323
|
-
})
|
|
324
|
-
});
|
|
325
|
-
function requireNumber(value, field) {
|
|
326
|
-
if (value === void 0) {
|
|
327
|
-
throw new Error(`modulate_confidence requires ${field}`);
|
|
328
|
-
}
|
|
329
|
-
return value;
|
|
330
|
-
}
|
|
331
|
-
function assertProvenance(input) {
|
|
332
|
-
if (!hasProvenance(input)) {
|
|
333
|
-
throw new Error(
|
|
334
|
-
"modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance"
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
function hasProvenance(input) {
|
|
339
|
-
return input.trigger === "backfill_synthetic" || Boolean(input.provenance && Object.values(input.provenance).some(Boolean)) || Boolean(input.triggeringEvidenceId) || Boolean(input.triggeringQuestionId) || Boolean(input.triggeringAnswerId) || Boolean(input.triggeringContradictionId) || Boolean(input.triggeringWorktreeId);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
// src/projections/index.ts
|
|
343
|
-
var projections = {
|
|
344
|
-
create_evidence: createEvidenceProjection,
|
|
345
|
-
list_beliefs: listBeliefsProjection,
|
|
346
|
-
list_tasks: listTasksProjection,
|
|
347
|
-
modulate_confidence: modulateConfidenceProjection
|
|
348
|
-
};
|
|
349
|
-
|
|
350
|
-
// src/projections/check-convex-args-shape.ts
|
|
351
|
-
var fixture = {
|
|
352
|
-
create_evidence: {
|
|
353
|
-
topicId: "topic:fixture",
|
|
354
|
-
canonicalText: "projection fixture evidence",
|
|
355
|
-
sourceUrl: "https://example.test/evidence",
|
|
356
|
-
targetId: "belief:fixture",
|
|
357
|
-
weight: 0.6,
|
|
358
|
-
rationale: "projection fixture"
|
|
359
|
-
},
|
|
360
|
-
list_beliefs: {
|
|
361
|
-
topicId: "topic:fixture",
|
|
362
|
-
status: "scored",
|
|
363
|
-
limit: 25
|
|
364
|
-
},
|
|
365
|
-
list_tasks: {
|
|
366
|
-
topicId: "topic:fixture",
|
|
367
|
-
worktreeId: "worktree:fixture",
|
|
368
|
-
status: "in_progress",
|
|
369
|
-
limit: 10
|
|
370
|
-
},
|
|
371
|
-
modulate_confidence: {
|
|
372
|
-
beliefNodeId: "belief:fixture",
|
|
373
|
-
opinion: {
|
|
374
|
-
belief: 0.7,
|
|
375
|
-
disbelief: 0.1,
|
|
376
|
-
uncertainty: 0.2,
|
|
377
|
-
baseRate: 0.5
|
|
378
|
-
},
|
|
379
|
-
trigger: "evidence_added",
|
|
380
|
-
provenance: { evidence: "evidence:fixture" },
|
|
381
|
-
rationale: "projection fixture"
|
|
382
|
-
}
|
|
383
|
-
};
|
|
384
|
-
function checkConvexArgsShape() {
|
|
385
|
-
for (const [name, projection] of Object.entries(projections)) {
|
|
386
|
-
const input = fixture[name];
|
|
387
|
-
const parsed = projection.inputSchema.safeParse(input);
|
|
388
|
-
if (!parsed.success) {
|
|
389
|
-
throw new Error(
|
|
390
|
-
`Projection fixture for ${name} failed input validation: ${parsed.error.message}`
|
|
391
|
-
);
|
|
392
|
-
}
|
|
393
|
-
const projected = projection.project(parsed.data);
|
|
394
|
-
if (!projected || typeof projected !== "object") {
|
|
395
|
-
throw new Error(`Projection ${name} did not emit object convex args.`);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
checkConvexArgsShape();
|
|
400
|
-
|
|
401
|
-
export { checkConvexArgsShape };
|
|
402
|
-
//# sourceMappingURL=check-convex-args-shape.js.map
|
|
403
|
-
//# sourceMappingURL=check-convex-args-shape.js.map
|