@lucern/contracts 1.0.16 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/api-enums.contract.d.ts +2 -2
  3. package/dist/api-enums.contract.js +2 -8
  4. package/dist/api-enums.contract.js.map +1 -1
  5. package/dist/context-pack.contract.d.ts +27 -7
  6. package/dist/context-pack.contract.js.map +1 -1
  7. package/dist/function-registry/beliefs.js +109 -115
  8. package/dist/function-registry/beliefs.js.map +1 -1
  9. package/dist/function-registry/coding.js +68 -91
  10. package/dist/function-registry/coding.js.map +1 -1
  11. package/dist/function-registry/context.js +68 -91
  12. package/dist/function-registry/context.js.map +1 -1
  13. package/dist/function-registry/contracts.js +68 -91
  14. package/dist/function-registry/contracts.js.map +1 -1
  15. package/dist/function-registry/coordination.js +68 -91
  16. package/dist/function-registry/coordination.js.map +1 -1
  17. package/dist/function-registry/edges.js +68 -91
  18. package/dist/function-registry/edges.js.map +1 -1
  19. package/dist/function-registry/evidence.js +182 -125
  20. package/dist/function-registry/evidence.js.map +1 -1
  21. package/dist/function-registry/graph.js +68 -91
  22. package/dist/function-registry/graph.js.map +1 -1
  23. package/dist/function-registry/helpers.js +68 -91
  24. package/dist/function-registry/helpers.js.map +1 -1
  25. package/dist/function-registry/identity.js +68 -91
  26. package/dist/function-registry/identity.js.map +1 -1
  27. package/dist/function-registry/index.js +68 -91
  28. package/dist/function-registry/index.js.map +1 -1
  29. package/dist/function-registry/judgments.js +68 -91
  30. package/dist/function-registry/judgments.js.map +1 -1
  31. package/dist/function-registry/legacy.js +68 -91
  32. package/dist/function-registry/legacy.js.map +1 -1
  33. package/dist/function-registry/lenses.js +68 -91
  34. package/dist/function-registry/lenses.js.map +1 -1
  35. package/dist/function-registry/manifest.d.ts +3 -3
  36. package/dist/function-registry/manifest.js +3 -3
  37. package/dist/function-registry/manifest.js.map +1 -1
  38. package/dist/function-registry/nodes.js +68 -91
  39. package/dist/function-registry/nodes.js.map +1 -1
  40. package/dist/function-registry/ontologies.js +68 -91
  41. package/dist/function-registry/ontologies.js.map +1 -1
  42. package/dist/function-registry/pipeline.js +68 -91
  43. package/dist/function-registry/pipeline.js.map +1 -1
  44. package/dist/function-registry/questions.js +68 -91
  45. package/dist/function-registry/questions.js.map +1 -1
  46. package/dist/function-registry/tasks.js +68 -91
  47. package/dist/function-registry/tasks.js.map +1 -1
  48. package/dist/function-registry/topics.js +68 -91
  49. package/dist/function-registry/topics.js.map +1 -1
  50. package/dist/function-registry/worktrees.js +68 -91
  51. package/dist/function-registry/worktrees.js.map +1 -1
  52. package/dist/generated/convexSchemas.js +2 -2
  53. package/dist/generated/convexSchemas.js.map +1 -1
  54. package/dist/index.d.ts +4 -4
  55. package/dist/index.js +162 -130
  56. package/dist/index.js.map +1 -1
  57. package/dist/manifests/invariant-manifest.d.ts +1 -1
  58. package/dist/manifests/invariants/index.d.ts +1 -1
  59. package/dist/manifests/invariants/index.js +1 -1
  60. package/dist/manifests/invariants/index.js.map +1 -1
  61. package/dist/manifests/invariants/inv-1-beliefs-append-only.d.ts +1 -1
  62. package/dist/manifests/invariants/inv-14-no-silent-transitions.d.ts +1 -1
  63. package/dist/manifests/invariants/manifest-1-projections-declare-audit.d.ts +1 -1
  64. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js +1 -1
  65. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js.map +1 -1
  66. package/dist/projections/{modulate-confidence.projection.d.ts → append-sl-scoring.projection.d.ts} +69 -69
  67. package/dist/projections/{modulate-confidence.projection.js → append-sl-scoring.projection.js} +14 -14
  68. package/dist/projections/append-sl-scoring.projection.js.map +1 -0
  69. package/dist/projections/check-convex-args-shape.js +88 -29
  70. package/dist/projections/check-convex-args-shape.js.map +1 -1
  71. package/dist/projections/create-evidence.projection.js +76 -17
  72. package/dist/projections/create-evidence.projection.js.map +1 -1
  73. package/dist/projections/index.d.ts +47 -47
  74. package/dist/projections/index.js +88 -29
  75. package/dist/projections/index.js.map +1 -1
  76. package/dist/proof-attestation.json +3 -3
  77. package/dist/schemas/index.js +6 -4
  78. package/dist/schemas/index.js.map +1 -1
  79. package/dist/schemas/manifest.d.ts +110 -60
  80. package/dist/schemas/manifest.js +6 -4
  81. package/dist/schemas/manifest.js.map +1 -1
  82. package/dist/schemas/tables/kernel/intelligence.d.ts +20 -10
  83. package/dist/schemas/tables/kernel/intelligence.js +4 -2
  84. package/dist/schemas/tables/kernel/intelligence.js.map +1 -1
  85. package/dist/schemas/tables/kernel/spine.d.ts +2 -2
  86. package/dist/schemas/tables/kernel/spine.js +2 -2
  87. package/dist/schemas/tables/kernel/spine.js.map +1 -1
  88. package/dist/schemas.values.js +6 -4
  89. package/dist/schemas.values.js.map +1 -1
  90. package/dist/sdk-methods.contract.d.ts +6 -16
  91. package/dist/sdk-tools.contract.js +65 -88
  92. package/dist/sdk-tools.contract.js.map +1 -1
  93. package/dist/sdk-tools.contract.registry.js +65 -88
  94. package/dist/sdk-tools.contract.registry.js.map +1 -1
  95. package/dist/sdk-tools.contract.values.js +65 -88
  96. package/dist/sdk-tools.contract.values.js.map +1 -1
  97. package/dist/tool-contracts.d.ts +1 -1
  98. package/dist/tool-contracts.graph.js +3 -3
  99. package/dist/tool-contracts.graph.js.map +1 -1
  100. package/dist/tool-contracts.intelligence-evidence.js +7 -7
  101. package/dist/tool-contracts.intelligence-evidence.js.map +1 -1
  102. package/dist/tool-contracts.js +66 -89
  103. package/dist/tool-contracts.js.map +1 -1
  104. package/dist/tool-contracts.lifecycle.d.ts +2 -2
  105. package/dist/tool-contracts.lifecycle.js +49 -68
  106. package/dist/tool-contracts.lifecycle.js.map +1 -1
  107. package/dist/tool-contracts.pipeline-coordination.js +1 -1
  108. package/dist/tool-contracts.pipeline-coordination.js.map +1 -1
  109. package/dist/tool-contracts.questions-listing.js +5 -9
  110. package/dist/tool-contracts.questions-listing.js.map +1 -1
  111. package/dist/{tool-contracts.values-BhxfrXS5.d.ts → tool-contracts.values-CCoI3qQY.d.ts} +3 -3
  112. package/dist/tool-contracts.values.d.ts +1 -1
  113. package/dist/tool-contracts.values.js +66 -89
  114. package/dist/tool-contracts.values.js.map +1 -1
  115. package/package.json +1 -1
  116. package/dist/projections/modulate-confidence.projection.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ids.contract.ts","../../src/projections/projection-dsl.ts","../../src/projections/create-evidence.projection.ts"],"names":[],"mappings":";;;;;;AAKA,IAAM,mBAAA,GAAsB,yBAAA;AAarB,SAAS,iBAAiB,EAAA,EAA+B;AAC9D,EAAA,MAAM,UAAA,GAAa,GAAG,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,IAAA,CAAK,UAAU,CAAA;AAEjD,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,EAAE,CAAA,CAAE,CAAA;AAAA,EAC9C;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,MAAM,CAAC,CAAA;AAAA,IACf,KAAA,EAAO,MAAM,CAAC;AAAA,GAChB;AACF;;;ACrBO,SAAS,iBACd,GAAA,EACqB;AACrB,EAAA,OAAO,GAAA;AACT;;;ACRA,IAAM,gBAAA,GAAmB,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,SAAS,CAAA;AAE7C,IAAM,yBAAyB,CAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,aAAa,CAAC,CAAA;AACjE,IAAM,2BAAA,GAA8B,EAAE,IAAA,CAAK;AAAA,EACzC,UAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC,CAAA;AACD,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EACpC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAClC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,QAAA,EAAU,4BAA4B,QAAA,EAAS;AAAA,EAC/C,gBAAA,EAAkB,uBAAuB,QAAA,EAAS;AAAA,EAClD,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxB,CAAC,CAAA;AAED,IAAM,6BAAA,GAAgC,EACnC,MAAA,CAAO;AAAA,EACN,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,aAAA,EAAe,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,MAAM,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACnC,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,kBAAA,EAAoB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxC,gBAAA,EAAkB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,oBAAA,EAAsB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1C,iBAAA,EAAmB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACvC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAClC,kBAAA,EAAoB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxC,gBAAA,EAAkB,uBAAuB,QAAA,EAAS;AAAA,EAClD,eAAA,EAAiB,CAAA,CAAE,KAAA,CAAM,oBAAoB,EAAE,QAAA,EAAS;AAAA,EACxD,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,EACpB,QAAA,EAAU,iBAAiB,QAAA,EAAS;AAAA,EACpC,wBAAA,EAA0B,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACxC,CAAC,EACA,WAAA,EAAY;AAEf,SAAS,iBAAiB,KAAA,EAAoC;AAC5D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,QAAA,CAAS,KAAK,KAAK,KAAA,KAAU,CAAA;AAC1E;AAEA,SAAS,iBAAA,CACP,OACA,MAAA,EACS;AACT,EAAA,OAAO,OAAA,CAAQ,iBAAA,CAAkB,KAAA,EAAO,MAAM,CAAC,CAAA;AACjD;AAEO,IAAM,4BAA4B,6BAAA,CAA8B,WAAA;AAAA,EACrE,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,IAAI,CAAC,KAAA,CAAM,IAAA,IAAQ,CAAC,MAAM,aAAA,EAAe;AACvC,MAAA,GAAA,CAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,EAAE,YAAA,CAAa,MAAA;AAAA,QACrB,OAAA,EAAS,+BAAA;AAAA,QACT,IAAA,EAAM,CAAC,MAAM;AAAA,OACd,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAA;AACvC,IAAA,MAAM,IAAA,GAAO,WAAW,MAAM,CAAA;AAC9B,IAAA,MAAM,kBAAA,GAAqB,OAAA;AAAA,MACzB,KAAA,CAAM,kBAAA,IACJ,IAAA,KAAS,QAAA,IACR,SAAS,SAAA,IAAa;AAAA,KAC3B;AACA,IAAA,MAAM,SACJ,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,GAAW,MAAM,MAAA,GAAS,MAAA;AACpD,IAAA,IACE,sBACA,CAAC,iBAAA,CAAkB,KAAA,CAAM,gBAAA,EAAkB,MAAM,CAAA,EACjD;AACA,MAAA,GAAA,CAAI,QAAA,CAAS;AAAA,QACX,IAAA,EAAM,EAAE,YAAA,CAAa,MAAA;AAAA,QACrB,OAAA,EACE,wGAAA;AAAA,QACF,IAAA,EAAM,CAAC,kBAAkB;AAAA,OAC1B,CAAA;AAAA,IACH;AAEA,IAAA,KAAA,CAAM,eAAA,EAAiB,OAAA,CAAQ,CAAC,QAAA,EAAU,KAAA,KAAU;AAClD,MAAA,MAAM,YAAA,GACJ,QAAA,CAAS,YAAA,IAAgB,QAAA,CAAS,YAAY,QAAA,CAAS,QAAA;AACzD,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,GAAA,CAAI,QAAA,CAAS;AAAA,UACX,IAAA,EAAM,EAAE,YAAA,CAAa,MAAA;AAAA,UACrB,OAAA,EAAS,qEAAA;AAAA,UACT,IAAA,EAAM,CAAC,iBAAA,EAAmB,KAAA,EAAO,cAAc;AAAA,SAChD,CAAA;AAAA,MACH;AACA,MAAA,MAAM,iBACJ,OAAO,QAAA,CAAS,MAAA,KAAW,QAAA,GAAW,SAAS,MAAA,GAAS,MAAA;AAC1D,MAAA,IACE,gBACA,CAAC,iBAAA;AAAA,QACC,QAAA,CAAS,oBAAoB,QAAA,CAAS,QAAA;AAAA,QACtC;AAAA,OACF,EACA;AACA,QAAA,GAAA,CAAI,QAAA,CAAS;AAAA,UACX,IAAA,EAAM,EAAE,YAAA,CAAa,MAAA;AAAA,UACrB,OAAA,EACE,sGAAA;AAAA,UACF,IAAA,EAAM,CAAC,iBAAA,EAAmB,KAAA,EAAO,kBAAkB;AAAA,SACpD,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACF;AAMA,SAAS,cACP,KAAA,EACyB;AACzB,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACZ,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,KAAA,KAAU,MAAS;AAAA,GACjE;AACF;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAO,UAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,YAAY,KAAA,EAAyC;AAC5D,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA,GAAQ,EAAC;AACpC;AAEA,SAAS,0BACP,OAAA,EACoB;AACpB,EAAA,MAAM,UAAA,GAAa,SAAS,IAAA,EAAK;AACjC,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,iBAAiB,UAAU,CAAA;AAC3C,IAAA,OAAO,OAAA,CAAQ,MAAA,KAAW,KAAA,GAAQ,OAAA,CAAQ,KAAA,GAAQ,UAAA;AAAA,EACpD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,UAAA;AAAA,EACT;AACF;AAEA,SAAS,oBAAoB,KAAA,EAA+C;AAC1E,EAAA,MAAM,UAAA,GAAa,OAAO,IAAA,EAAK;AAC/B,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAA,CAAW,UAAA,CAAW,KAAK,CAAA,EAAG;AAChC,IAAA,OAAO,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA;AAAA,EACtC;AACA,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,WACP,QAAA,EACgD;AAChD,EAAA,MAAM,UAAA,GAAa,UAAU,IAAA,EAAK;AAClC,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,IAAI,WAAW,UAAA,CAAW,KAAK,KAAK,gBAAA,CAAiB,IAAA,CAAK,UAAU,CAAA,EAAG;AACrE,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAA,CAAW,UAAA,CAAW,MAAM,CAAA,EAAG;AACjC,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAA,CAAW,UAAA,CAAW,MAAM,CAAA,EAAG;AACjC,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,iBAAA,CAAkB,OAA2B,MAAA,EAA4B;AAChF,EAAA,IAAI,KAAA,KAAU,UAAA,IAAc,KAAA,KAAU,YAAA,EAAc;AAClD,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,KAAU,aAAA,IAAiB,KAAA,KAAU,eAAA,EAAiB;AACxD,IAAA,OAAO,aAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAA,KAAW,MAAA,IAAa,CAAC,gBAAA,CAAiB,MAAM,CAAA,EAAG;AACrD,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,GAAS,IAAK,aAAA,GAA2B,UAAA;AAClD;AAEA,SAAS,mBAAA,CACP,YACA,MAAA,EACA;AACA,EAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,IAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,UAAU,CAAC,CAAA;AAAA,EAC5C;AACA,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,MAAM,CAAC,CAAC,CAAA;AAClD;AAEA,SAAS,wBACP,QAAA,EACA;AACA,EAAA,MAAM,YAAA,GACJ,QAAA,CAAS,YAAA,IAAgB,QAAA,CAAS,YAAY,QAAA,CAAS,QAAA;AACzD,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,SACJ,OAAO,QAAA,CAAS,MAAA,KAAW,QAAA,GAAW,SAAS,MAAA,GAAS,MAAA;AAC1D,EAAA,MAAM,gBAAA,GAAmB,iBAAA;AAAA,IACvB,QAAA,CAAS,oBAAoB,QAAA,CAAS,QAAA;AAAA,IACtC;AAAA,GACF;AACA,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,aAAA,CAAc;AAAA,IACnB,YAAA;AAAA,IACA,QAAA,EAAU,gBAAA;AAAA,IACV,UAAA,EAAY,mBAAA,CAAoB,QAAA,CAAS,UAAA,EAAY,MAAM,CAAA;AAAA,IAC3D,WAAW,QAAA,CAAS;AAAA,GACrB,CAAA;AACH;AAEO,IAAM,2BAA2B,gBAAA,CAAiB;AAAA,EACvD,YAAA,EAAc,iBAAA;AAAA,EACd,WAAA,EAAa,yBAAA;AAAA,EACb,OAAA,EAAS,CAAC,KAAA,KAAyC;AACjD,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,aAAA;AACjC,IAAA,MAAM,SAAS,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,GAAW,MAAM,MAAA,GAAS,MAAA;AACjE,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,YAAA;AACvC,IAAA,MAAM,IAAA,GAAO,WAAW,MAAM,CAAA;AAC9B,IAAA,MAAM,gBAAA,GACJ,IAAA,KAAS,UAAA,GAAa,mBAAA,CAAoB,MAAM,CAAA,GAAI,MAAA;AACtD,IAAA,MAAM,kBAAA,GACJ,KAAA,CAAM,kBAAA,KACL,IAAA,KAAS,QAAA,IAAY,SAAS,SAAA,GAC1B,KAAA,CAAM,YAAA,IAAgB,KAAA,CAAM,QAAA,GAC7B,MAAA,CAAA;AACN,IAAA,MAAM,mBAAmB,kBAAA,GACrB,iBAAA,CAAkB,KAAA,CAAM,gBAAA,EAAkB,MAAM,CAAA,GAChD,MAAA;AACJ,IAAA,MAAM,aAAa,gBAAA,GACf,mBAAA,CAAoB,KAAA,CAAM,UAAA,EAAY,MAAM,CAAA,GAC5C,MAAA;AACJ,IAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,eAAA,EAC1B,GAAA,CAAI,uBAAuB,CAAA,CAC5B,MAAA;AAAA,MACC,CAAC,aAAkD,QAAA,KAAa;AAAA,KAClE;AAEF,IAAA,OAAO,aAAA,CAAc;AAAA,MACnB,WAAW,KAAA,CAAM,SAAA;AAAA,MACjB,OAAA,EAAS,yBAAA,CAA0B,KAAA,CAAM,OAAO,CAAA;AAAA,MAChD,IAAA;AAAA,MACA,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA;AAAA,MACtB,OAAA,EAAS,MAAM,OAAA,IAAW,IAAA;AAAA,MAC1B,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,oBAAoB,KAAA,CAAM,kBAAA;AAAA,MAC1B,SAAA,EAAW,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,MAAA;AAAA,MACpC,kBAAkB,KAAA,CAAM,gBAAA;AAAA,MACxB,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,sBAAsB,KAAA,CAAM,oBAAA;AAAA,MAC5B,mBAAmB,KAAA,CAAM,iBAAA;AAAA,MACzB,UAAU,aAAA,CAAc;AAAA,QACtB,GAAG,WAAA,CAAY,KAAA,CAAM,QAAQ,CAAA;AAAA,QAC7B,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,cAAc,KAAA,CAAM,YAAA;AAAA,QACpB,UAAA,EAAY,IAAA,KAAS,SAAA,GAAY,MAAA,GAAY,IAAA;AAAA,QAC7C,gBAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,WAAW,KAAA,CAAM;AAAA,OAClB,CAAA;AAAA,MACD,kBAAA;AAAA,MACA,gBAAA;AAAA,MACA,UAAA;AAAA,MACA,eAAA,EACE,eAAA,IAAmB,eAAA,CAAgB,MAAA,GAAS,IACxC,eAAA,GACA,MAAA;AAAA,MACN,WAAW,KAAA,CAAM,SAAA;AAAA,MACjB,wBAAA,EAA0B,MAAM,wBAAA,IAA4B;AAAA,KAC7D,CAAA;AAAA,EACH,CAAA;AAAA,EACA,mBAAA,EAAqB,EAAE,MAAA,CAAO;AAAA,IAC5B,SAAA,EAAW,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAChC,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAC9B,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,IACf,KAAA,EAAO,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAC5B,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAC9B,WAAA,EAAa,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAClC,IAAA,EAAM,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAC3B,IAAA,EAAM,EAAE,QAAA,CAAS,CAAA,CAAE,MAAM,CAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,IACpC,UAAA,EAAY,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IACjC,kBAAA,EAAoB,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IACzC,SAAA,EAAW,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAChC,gBAAA,EAAkB,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IACvC,WAAA,EAAa,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAClC,oBAAA,EAAsB,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IAC3C,iBAAA,EAAmB,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IACxC,QAAA,EAAU,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,GAAA,EAAK,CAAC,CAAA;AAAA,IAClD,kBAAA,EAAoB,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IACzC,kBAAkB,CAAA,CAAE,QAAA;AAAA,MAClB,CAAA,CAAE,KAAA;AAAA,QACA,CAAA,CAAE,QAAQ,UAAU,CAAA;AAAA,QACpB,CAAA,CAAE,QAAQ,aAAa;AAAA;AACzB,KACF;AAAA,IACA,iBAAiB,CAAA,CAAE,QAAA;AAAA,MACjB,CAAA,CAAE,KAAA;AAAA,QACA,EAAE,MAAA,CAAO;AAAA,UACP,YAAA,EAAc,EAAE,MAAA,EAAO;AAAA,UACvB,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,EAAG,CAAA,CAAE,OAAA,CAAQ,aAAa,CAAC,CAAA;AAAA,UACjE,UAAA,EAAY,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,UACjC,SAAA,EAAW,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ;AAAA,SACjC;AAAA;AACH,KACF;AAAA,IACA,UAAA,EAAY,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAAA,IACjC,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,IACpB,wBAAA,EAA0B,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,SAAS;AAAA,GACjD;AACH,CAAC","file":"create-evidence.projection.js","sourcesContent":["export type DecodedPrefixedId = {\n prefix: string;\n value: string;\n};\n\nconst PREFIXED_ID_PATTERN = /^([a-z][a-z0-9]*)_(.+)$/;\n\nexport function encodePrefixedId(prefix: string, value: string): string {\n const normalizedPrefix = prefix.trim();\n const normalizedValue = value.trim();\n\n if (!normalizedPrefix || !normalizedValue) {\n throw new Error(\"Both prefix and value are required to encode a prefixed ID.\");\n }\n\n return `${normalizedPrefix}_${normalizedValue}`;\n}\n\nexport function decodePrefixedId(id: string): DecodedPrefixedId {\n const normalized = id.trim();\n const match = PREFIXED_ID_PATTERN.exec(normalized);\n\n if (!match) {\n throw new Error(`Invalid prefixed ID: ${id}`);\n }\n\n return {\n prefix: match[1],\n value: match[2],\n };\n}\n\nexport function hasPrefixedIdPrefix(id: string, prefix: string): boolean {\n const decoded = decodePrefixedId(id);\n return decoded.prefix === prefix.trim();\n}\n","import type { z } from \"zod\";\n\nexport interface ProjectionDef<TInput, TConvexArgs> {\n contractName: string;\n inputSchema: z.ZodSchema<TInput>;\n project: (input: TInput) => TConvexArgs;\n convexArgsValidator: unknown;\n}\n\nexport function defineProjection<I, C>(\n def: ProjectionDef<I, C>\n): ProjectionDef<I, C> {\n return def;\n}\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { decodePrefixedId } from \"../ids.contract.js\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst jsonRecordSchema = z.record(z.unknown());\n\nconst evidenceRelationSchema = z.enum([\"supports\", \"contradicts\"]);\nconst evidenceRelationAliasSchema = z.enum([\n \"supports\",\n \"contradicts\",\n \"supporting\",\n \"contradicting\",\n]);\nconst beliefRelationSchema = z.object({\n beliefId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n targetId: z.string().optional(),\n relation: evidenceRelationAliasSchema.optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n rationale: z.string().optional(),\n});\n\nconst createEvidenceInputSchemaBase = z\n .object({\n projectId: z.string().optional(),\n topicId: z.string().optional(),\n text: z.string().optional(),\n canonicalText: z.string().optional(),\n title: z.string().optional(),\n content: z.string().optional(),\n contentType: z.string().optional(),\n kind: z.string().optional(),\n tags: z.array(z.string()).optional(),\n source: z.string().optional(),\n sourceUrl: z.string().optional(),\n sourceType: z.string().optional(),\n externalSourceType: z.string().optional(),\n sourceQuestionId: z.string().optional(),\n methodology: z.string().optional(),\n informationAsymmetry: z.string().optional(),\n sourceDescription: z.string().optional(),\n targetId: z.string().optional(),\n targetNodeId: z.string().optional(),\n linkedBeliefNodeId: z.string().optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n beliefRelations: z.array(beliefRelationSchema).optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n reasoning: z.string().optional(),\n rationale: z.string(),\n metadata: jsonRecordSchema.optional(),\n trustedBypassAccessCheck: z.boolean().optional(),\n })\n .passthrough();\n\nfunction hasNonzeroWeight(value: number | undefined): boolean {\n return typeof value === \"number\" && Number.isFinite(value) && value !== 0;\n}\n\nfunction hasRelationSignal(\n value: string | undefined,\n weight: number | undefined,\n): boolean {\n return Boolean(normalizeRelation(value, weight));\n}\n\nexport const createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(\n (input, ctx) => {\n if (!input.text && !input.canonicalText) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"create_evidence requires text\",\n path: [\"text\"],\n });\n }\n\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linksPrimaryBelief = Boolean(\n input.linkedBeliefNodeId ||\n kind === \"belief\" ||\n (kind === \"unknown\" && target),\n );\n const weight =\n typeof input.weight === \"number\" ? input.weight : undefined;\n if (\n linksPrimaryBelief &&\n !hasRelationSignal(input.evidenceRelation, weight)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"belief-targeted evidence requires evidenceRelation='supports'|'contradicts' or a nonzero signed weight\",\n path: [\"evidenceRelation\"],\n });\n }\n\n input.beliefRelations?.forEach((relation, index) => {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"beliefRelations entries require beliefId, beliefNodeId, or targetId\",\n path: [\"beliefRelations\", index, \"beliefNodeId\"],\n });\n }\n const relationWeight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n if (\n beliefNodeId &&\n !hasRelationSignal(\n relation.evidenceRelation ?? relation.relation,\n relationWeight,\n )\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"beliefRelations entries require evidenceRelation='supports'|'contradicts' or a nonzero signed weight\",\n path: [\"beliefRelations\", index, \"evidenceRelation\"],\n });\n }\n });\n },\n);\n\nexport type CreateEvidenceProjectionInput = z.infer<\n typeof createEvidenceInputSchema\n>;\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? value : {};\n}\n\nfunction normalizeTopicIdForKernel(\n topicId: string | undefined,\n): string | undefined {\n const normalized = topicId?.trim();\n if (!normalized) {\n return undefined;\n }\n\n try {\n const decoded = decodePrefixedId(normalized);\n return decoded.prefix === \"top\" ? decoded.value : normalized;\n } catch {\n return normalized;\n }\n}\n\nfunction normalizeWorktreeId(value: string | undefined): string | undefined {\n const normalized = value?.trim();\n if (!normalized) {\n return undefined;\n }\n if (normalized.startsWith(\"wt_\")) {\n return normalized.slice(\"wt_\".length);\n }\n return normalized;\n}\n\nfunction targetKind(\n targetId: string | undefined,\n): \"belief\" | \"question\" | \"worktree\" | \"unknown\" {\n const normalized = targetId?.trim();\n if (!normalized) {\n return \"unknown\";\n }\n if (normalized.startsWith(\"wt_\") || /^tn[a-z0-9]+$/i.test(normalized)) {\n return \"worktree\";\n }\n if (normalized.startsWith(\"que_\")) {\n return \"question\";\n }\n if (normalized.startsWith(\"bel_\")) {\n return \"belief\";\n }\n return \"unknown\";\n}\n\nfunction normalizeRelation(value: string | undefined, weight: number | undefined) {\n if (value === \"supports\" || value === \"supporting\") {\n return \"supports\" as const;\n }\n if (value === \"contradicts\" || value === \"contradicting\") {\n return \"contradicts\" as const;\n }\n if (weight === undefined || !hasNonzeroWeight(weight)) {\n return undefined;\n }\n return weight < 0 ? (\"contradicts\" as const) : (\"supports\" as const);\n}\n\nfunction normalizeConfidence(\n confidence: number | undefined,\n weight: number | undefined,\n) {\n if (confidence !== undefined) {\n return Math.min(1, Math.max(0, confidence));\n }\n if (weight === undefined) {\n return undefined;\n }\n return Math.min(1, Math.max(0, Math.abs(weight)));\n}\n\nfunction normalizeBeliefRelation(\n relation: z.infer<typeof beliefRelationSchema>,\n) {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n return undefined;\n }\n const weight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n const evidenceRelation = normalizeRelation(\n relation.evidenceRelation ?? relation.relation,\n weight,\n );\n if (!evidenceRelation) {\n return undefined;\n }\n return compactRecord({\n beliefNodeId,\n relation: evidenceRelation,\n confidence: normalizeConfidence(relation.confidence, weight),\n rationale: relation.rationale,\n });\n}\n\nexport const createEvidenceProjection = defineProjection({\n contractName: \"create_evidence\",\n inputSchema: createEvidenceInputSchema,\n project: (input: CreateEvidenceProjectionInput) => {\n const text = input.text ?? input.canonicalText;\n const weight = typeof input.weight === \"number\" ? input.weight : undefined;\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linkedWorktreeId =\n kind === \"worktree\" ? normalizeWorktreeId(target) : undefined;\n const linkedBeliefNodeId =\n input.linkedBeliefNodeId ??\n (kind === \"belief\" || kind === \"unknown\"\n ? (input.targetNodeId ?? input.targetId)\n : undefined);\n const evidenceRelation = linkedBeliefNodeId\n ? normalizeRelation(input.evidenceRelation, weight)\n : undefined;\n const confidence = evidenceRelation\n ? normalizeConfidence(input.confidence, weight)\n : undefined;\n const beliefRelations = input.beliefRelations\n ?.map(normalizeBeliefRelation)\n .filter(\n (relation): relation is Record<string, unknown> => relation !== undefined,\n );\n\n return compactRecord({\n projectId: input.projectId,\n topicId: normalizeTopicIdForKernel(input.topicId),\n text,\n title: input.title ?? text,\n content: input.content ?? text,\n contentType: input.contentType,\n kind: input.kind,\n tags: input.tags,\n sourceType: input.sourceType,\n externalSourceType: input.externalSourceType,\n sourceUrl: input.sourceUrl ?? input.source,\n sourceQuestionId: input.sourceQuestionId,\n methodology: input.methodology,\n informationAsymmetry: input.informationAsymmetry,\n sourceDescription: input.sourceDescription,\n metadata: compactRecord({\n ...recordValue(input.metadata),\n source: input.source,\n targetId: input.targetId,\n targetNodeId: input.targetNodeId,\n targetKind: kind === \"unknown\" ? undefined : kind,\n linkedWorktreeId,\n weight,\n reasoning: input.reasoning,\n rationale: input.rationale,\n }),\n linkedBeliefNodeId,\n evidenceRelation,\n confidence,\n beliefRelations:\n beliefRelations && beliefRelations.length > 0\n ? beliefRelations\n : undefined,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n });\n },\n convexArgsValidator: v.object({\n projectId: v.optional(v.string()),\n topicId: v.optional(v.string()),\n text: v.string(),\n title: v.optional(v.string()),\n content: v.optional(v.string()),\n contentType: v.optional(v.string()),\n kind: v.optional(v.string()),\n tags: v.optional(v.array(v.string())),\n sourceType: v.optional(v.string()),\n externalSourceType: v.optional(v.string()),\n sourceUrl: v.optional(v.string()),\n sourceQuestionId: v.optional(v.string()),\n methodology: v.optional(v.string()),\n informationAsymmetry: v.optional(v.string()),\n sourceDescription: v.optional(v.string()),\n metadata: v.optional(v.record(v.string(), v.any())),\n linkedBeliefNodeId: v.optional(v.string()),\n evidenceRelation: v.optional(\n v.union(\n v.literal(\"supports\"),\n v.literal(\"contradicts\"),\n ),\n ),\n beliefRelations: v.optional(\n v.array(\n v.object({\n beliefNodeId: v.string(),\n relation: v.union(v.literal(\"supports\"), v.literal(\"contradicts\")),\n confidence: v.optional(v.number()),\n rationale: v.optional(v.string()),\n }),\n ),\n ),\n confidence: v.optional(v.number()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n"]}
1
+ {"version":3,"sources":["../../src/ids.contract.ts","../../src/projections/projection-dsl.ts","../../src/projections/create-evidence.projection.ts"],"names":[],"mappings":"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","file":"create-evidence.projection.js","sourcesContent":["export type DecodedPrefixedId = {\n prefix: string;\n value: string;\n};\n\nconst PREFIXED_ID_PATTERN = /^([a-z][a-z0-9]*)_(.+)$/;\n\nexport function encodePrefixedId(prefix: string, value: string): string {\n const normalizedPrefix = prefix.trim();\n const normalizedValue = value.trim();\n\n if (!normalizedPrefix || !normalizedValue) {\n throw new Error(\"Both prefix and value are required to encode a prefixed ID.\");\n }\n\n return `${normalizedPrefix}_${normalizedValue}`;\n}\n\nexport function decodePrefixedId(id: string): DecodedPrefixedId {\n const normalized = id.trim();\n const match = PREFIXED_ID_PATTERN.exec(normalized);\n\n if (!match) {\n throw new Error(`Invalid prefixed ID: ${id}`);\n }\n\n return {\n prefix: match[1],\n value: match[2],\n };\n}\n\nexport function hasPrefixedIdPrefix(id: string, prefix: string): boolean {\n const decoded = decodePrefixedId(id);\n return decoded.prefix === prefix.trim();\n}\n","import type { z } from \"zod\";\n\nexport interface ProjectionDef<TInput, TConvexArgs> {\n contractName: string;\n inputSchema: z.ZodSchema<TInput>;\n project: (input: TInput) => TConvexArgs;\n convexArgsValidator: unknown;\n}\n\nexport function defineProjection<I, C>(\n def: ProjectionDef<I, C>\n): ProjectionDef<I, C> {\n return def;\n}\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { decodePrefixedId } from \"../ids.contract.js\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst jsonRecordSchema = z.record(z.unknown());\n\nconst evidenceRelationSchema = z.enum([\"supports\", \"contradicts\"]);\nconst evidenceRelationAliasSchema = z.enum([\n \"supports\",\n \"contradicts\",\n \"supporting\",\n \"contradicting\",\n]);\nconst beliefRelationSchema = z.object({\n beliefId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n targetId: z.string().optional(),\n relation: evidenceRelationAliasSchema.optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n rationale: z.string().optional(),\n});\n\nconst createEvidenceInputSchemaBase = z\n .object({\n projectId: z.string().optional(),\n topicId: z.string().optional(),\n text: z.string().optional(),\n canonicalText: z.string().optional(),\n title: z.string().optional(),\n content: z.string().optional(),\n contentType: z.string().optional(),\n kind: z.string().optional(),\n tags: z.array(z.string()).optional(),\n source: z.string().optional(),\n sourceUrl: z.string().optional(),\n sourceType: z.string().optional(),\n externalSourceType: z.string().optional(),\n sourceQuestionId: z.string().optional(),\n methodology: z.string().optional(),\n informationAsymmetry: z.string().optional(),\n sourceDescription: z.string().optional(),\n targetId: z.string().optional(),\n targetNodeId: z.string().optional(),\n linkedBeliefNodeId: z.string().optional(),\n evidenceRelation: evidenceRelationSchema.optional(),\n beliefRelations: z.array(beliefRelationSchema).optional(),\n confidence: z.number().optional(),\n weight: z.number().optional(),\n reasoning: z.string().optional(),\n rationale: z.string(),\n metadata: jsonRecordSchema.optional(),\n trustedBypassAccessCheck: z.boolean().optional(),\n })\n .passthrough();\n\nfunction isSignedImpactScore(value: number | undefined): value is number {\n return (\n typeof value === \"number\" &&\n Number.isFinite(value) &&\n value >= -1 &&\n value <= 1 &&\n value !== 0\n );\n}\n\nfunction validateSignedImpactScore(\n value: number | undefined,\n ctx: z.RefinementCtx,\n path: (string | number)[],\n) {\n if (!isSignedImpactScore(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"evidence-to-belief links require an explicit nonzero signed impact score in [-1, 1]\",\n path,\n });\n return false;\n }\n return true;\n}\n\nfunction validateRelationImpactConsistency(\n relation: string | undefined,\n weight: number | undefined,\n ctx: z.RefinementCtx,\n path: (string | number)[],\n) {\n const normalized = normalizeRelationAlias(relation);\n if (!normalized || !isSignedImpactScore(weight)) {\n return;\n }\n if (normalized === \"supports\" && weight < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"supporting evidence requires a positive impact score\",\n path,\n });\n }\n if (normalized === \"contradicts\" && weight > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"contradicting evidence requires a negative impact score\",\n path,\n });\n }\n}\n\nexport const createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(\n (input, ctx) => {\n if (!input.text && !input.canonicalText) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"create_evidence requires text\",\n path: [\"text\"],\n });\n }\n\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linksPrimaryBelief = Boolean(\n input.linkedBeliefNodeId ||\n kind === \"belief\" ||\n (kind === \"unknown\" && target),\n );\n const weight =\n typeof input.weight === \"number\" ? input.weight : undefined;\n const hasBeliefRelations = (input.beliefRelations?.length ?? 0) > 0;\n if (!linksPrimaryBelief && !hasBeliefRelations) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"create_evidence requires at least one linked belief; evidence cannot be created as an orphan or linked only to a question/worktree\",\n path: [\"linkedBeliefNodeId\"],\n });\n }\n if (kind === \"question\" || kind === \"worktree\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"create_evidence targetId must be a belief. Link evidence to questions/worktrees only after the evidence has a belief impact edge.\",\n path: [\"targetId\"],\n });\n }\n if (linksPrimaryBelief) {\n validateSignedImpactScore(weight, ctx, [\"weight\"]);\n validateRelationImpactConsistency(input.evidenceRelation, weight, ctx, [\n \"weight\",\n ]);\n }\n\n input.beliefRelations?.forEach((relation, index) => {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"beliefRelations entries require beliefId, beliefNodeId, or targetId\",\n path: [\"beliefRelations\", index, \"beliefNodeId\"],\n });\n }\n const relationWeight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n if (beliefNodeId) {\n validateSignedImpactScore(relationWeight, ctx, [\n \"beliefRelations\",\n index,\n \"weight\",\n ]);\n validateRelationImpactConsistency(\n relation.evidenceRelation ?? relation.relation,\n relationWeight,\n ctx,\n [\"beliefRelations\", index, \"weight\"],\n );\n }\n });\n },\n);\n\nexport type CreateEvidenceProjectionInput = z.infer<\n typeof createEvidenceInputSchema\n>;\n\nfunction compactRecord(\n input: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(([, value]) => value !== undefined),\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? value : {};\n}\n\nfunction normalizeTopicIdForKernel(\n topicId: string | undefined,\n): string | undefined {\n const normalized = topicId?.trim();\n if (!normalized) {\n return undefined;\n }\n\n try {\n const decoded = decodePrefixedId(normalized);\n return decoded.prefix === \"top\" ? decoded.value : normalized;\n } catch {\n return normalized;\n }\n}\n\nfunction normalizeWorktreeId(value: string | undefined): string | undefined {\n const normalized = value?.trim();\n if (!normalized) {\n return undefined;\n }\n if (normalized.startsWith(\"wt_\")) {\n return normalized.slice(\"wt_\".length);\n }\n return normalized;\n}\n\nfunction targetKind(\n targetId: string | undefined,\n): \"belief\" | \"question\" | \"worktree\" | \"unknown\" {\n const normalized = targetId?.trim();\n if (!normalized) {\n return \"unknown\";\n }\n if (normalized.startsWith(\"wt_\") || /^tn[a-z0-9]+$/i.test(normalized)) {\n return \"worktree\";\n }\n if (normalized.startsWith(\"que_\")) {\n return \"question\";\n }\n if (normalized.startsWith(\"bel_\")) {\n return \"belief\";\n }\n return \"unknown\";\n}\n\nfunction normalizeRelationAlias(value: string | undefined) {\n if (value === \"supports\" || value === \"supporting\") {\n return \"supports\" as const;\n }\n if (value === \"contradicts\" || value === \"contradicting\") {\n return \"contradicts\" as const;\n }\n return undefined;\n}\n\nfunction normalizeRelation(value: string | undefined, weight: number | undefined) {\n const alias = normalizeRelationAlias(value);\n if (alias) {\n return alias;\n }\n if (weight === undefined || !hasNonzeroWeight(weight)) {\n return undefined;\n }\n return weight < 0 ? (\"contradicts\" as const) : (\"supports\" as const);\n}\n\nfunction hasNonzeroWeight(value: number | undefined): boolean {\n return typeof value === \"number\" && Number.isFinite(value) && value !== 0;\n}\n\nfunction normalizeConfidence(\n confidence: number | undefined,\n weight: number | undefined,\n) {\n if (confidence !== undefined) {\n return Math.min(1, Math.max(0, confidence));\n }\n if (weight === undefined) {\n return undefined;\n }\n return Math.min(1, Math.max(0, Math.abs(weight)));\n}\n\nfunction normalizeBeliefRelation(\n relation: z.infer<typeof beliefRelationSchema>,\n) {\n const beliefNodeId =\n relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;\n if (!beliefNodeId) {\n return undefined;\n }\n const weight =\n typeof relation.weight === \"number\" ? relation.weight : undefined;\n const evidenceRelation = normalizeRelation(\n relation.evidenceRelation ?? relation.relation,\n weight,\n );\n if (!evidenceRelation) {\n return undefined;\n }\n return compactRecord({\n beliefNodeId,\n relation: evidenceRelation,\n confidence: normalizeConfidence(relation.confidence, weight),\n weight,\n rationale: relation.rationale,\n });\n}\n\nexport const createEvidenceProjection = defineProjection({\n contractName: \"create_evidence\",\n inputSchema: createEvidenceInputSchema,\n project: (input: CreateEvidenceProjectionInput) => {\n const text = input.text ?? input.canonicalText;\n const weight = typeof input.weight === \"number\" ? input.weight : undefined;\n const target = input.targetId ?? input.targetNodeId;\n const kind = targetKind(target);\n const linkedWorktreeId =\n kind === \"worktree\" ? normalizeWorktreeId(target) : undefined;\n const linkedBeliefNodeId =\n input.linkedBeliefNodeId ??\n (kind === \"belief\" || kind === \"unknown\"\n ? (input.targetNodeId ?? input.targetId)\n : undefined);\n const evidenceRelation = linkedBeliefNodeId\n ? normalizeRelation(input.evidenceRelation, weight)\n : undefined;\n const confidence = evidenceRelation\n ? normalizeConfidence(input.confidence, weight)\n : undefined;\n const beliefRelations = input.beliefRelations\n ?.map(normalizeBeliefRelation)\n .filter(\n (relation): relation is Record<string, unknown> => relation !== undefined,\n );\n\n return compactRecord({\n projectId: input.projectId,\n topicId: normalizeTopicIdForKernel(input.topicId),\n text,\n title: input.title ?? text,\n content: input.content ?? text,\n contentType: input.contentType,\n kind: input.kind,\n tags: input.tags,\n sourceType: input.sourceType,\n externalSourceType: input.externalSourceType,\n sourceUrl: input.sourceUrl ?? input.source,\n sourceQuestionId: input.sourceQuestionId,\n methodology: input.methodology,\n informationAsymmetry: input.informationAsymmetry,\n sourceDescription: input.sourceDescription,\n metadata: compactRecord({\n ...recordValue(input.metadata),\n source: input.source,\n targetId: input.targetId,\n targetNodeId: input.targetNodeId,\n targetKind: kind === \"unknown\" ? undefined : kind,\n linkedWorktreeId,\n weight,\n reasoning: input.reasoning,\n rationale: input.rationale,\n }),\n linkedBeliefNodeId,\n evidenceRelation,\n confidence,\n weight,\n beliefRelations:\n beliefRelations && beliefRelations.length > 0\n ? beliefRelations\n : undefined,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n });\n },\n convexArgsValidator: v.object({\n projectId: v.optional(v.string()),\n topicId: v.optional(v.string()),\n text: v.string(),\n title: v.optional(v.string()),\n content: v.optional(v.string()),\n contentType: v.optional(v.string()),\n kind: v.optional(v.string()),\n tags: v.optional(v.array(v.string())),\n sourceType: v.optional(v.string()),\n externalSourceType: v.optional(v.string()),\n sourceUrl: v.optional(v.string()),\n sourceQuestionId: v.optional(v.string()),\n methodology: v.optional(v.string()),\n informationAsymmetry: v.optional(v.string()),\n sourceDescription: v.optional(v.string()),\n metadata: v.optional(v.record(v.string(), v.any())),\n linkedBeliefNodeId: v.optional(v.string()),\n evidenceRelation: v.optional(\n v.union(\n v.literal(\"supports\"),\n v.literal(\"contradicts\"),\n ),\n ),\n weight: v.optional(v.number()),\n beliefRelations: v.optional(\n v.array(\n v.object({\n beliefNodeId: v.string(),\n relation: v.union(v.literal(\"supports\"), v.literal(\"contradicts\")),\n confidence: v.optional(v.number()),\n weight: v.number(),\n rationale: v.optional(v.string()),\n }),\n ),\n ),\n confidence: v.optional(v.number()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n"]}
@@ -1,12 +1,57 @@
1
+ import * as zod from 'zod';
1
2
  import { ProjectionDef } from './projection-dsl.js';
2
3
  export { defineProjection } from './projection-dsl.js';
3
- import * as zod from 'zod';
4
+ export { appendSlScoringProjection } from './append-sl-scoring.projection.js';
4
5
  export { createEvidenceProjection } from './create-evidence.projection.js';
5
6
  export { listBeliefsProjection } from './list-beliefs.projection.js';
6
7
  export { listTasksProjection } from './list-tasks.projection.js';
7
- export { modulateConfidenceProjection } from './modulate-confidence.projection.js';
8
8
 
9
9
  declare const projections: {
10
+ readonly append_sl_scoring: ProjectionDef<{
11
+ rationale: string;
12
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic" | "answer_recorded";
13
+ belief?: number | undefined;
14
+ baseRate?: number | undefined;
15
+ nodeId?: string | undefined;
16
+ disbelief?: number | undefined;
17
+ uncertainty?: number | undefined;
18
+ provenance?: {
19
+ evidence?: string | undefined;
20
+ question?: string | undefined;
21
+ contradiction?: string | undefined;
22
+ worktree?: string | undefined;
23
+ answer?: string | undefined;
24
+ } | undefined;
25
+ triggeringEvidenceId?: string | undefined;
26
+ beliefNodeId?: string | undefined;
27
+ worktreeId?: string | undefined;
28
+ trustedBypassAccessCheck?: boolean | undefined;
29
+ opinion?: {
30
+ belief: number;
31
+ baseRate: number;
32
+ disbelief: number;
33
+ uncertainty: number;
34
+ } | undefined;
35
+ triggeringQuestionId?: string | undefined;
36
+ triggeringAnswerId?: string | undefined;
37
+ triggeringContradictionId?: string | undefined;
38
+ triggeringWorktreeId?: string | undefined;
39
+ }, {
40
+ nodeId: string;
41
+ worktreeId: string | undefined;
42
+ belief: number;
43
+ disbelief: number;
44
+ uncertainty: number;
45
+ baseRate: number;
46
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic";
47
+ triggeringEvidenceId: string | undefined;
48
+ triggeringQuestionId: string | undefined;
49
+ triggeringAnswerId: string | undefined;
50
+ triggeringContradictionId: string | undefined;
51
+ triggeringWorktreeId: string | undefined;
52
+ rationale: string;
53
+ trustedBypassAccessCheck: boolean;
54
+ }>;
10
55
  readonly create_evidence: ProjectionDef<zod.objectInputType<{
11
56
  projectId: zod.ZodOptional<zod.ZodString>;
12
57
  topicId: zod.ZodOptional<zod.ZodString>;
@@ -79,51 +124,6 @@ declare const projections: {
79
124
  limit?: number | undefined;
80
125
  linkedWorktreeId?: string | undefined;
81
126
  }, Record<string, unknown>>;
82
- readonly modulate_confidence: ProjectionDef<{
83
- rationale: string;
84
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
85
- belief?: number | undefined;
86
- baseRate?: number | undefined;
87
- nodeId?: string | undefined;
88
- disbelief?: number | undefined;
89
- uncertainty?: number | undefined;
90
- worktreeId?: string | undefined;
91
- triggeringEvidenceId?: string | undefined;
92
- triggeringQuestionId?: string | undefined;
93
- triggeringAnswerId?: string | undefined;
94
- triggeringContradictionId?: string | undefined;
95
- triggeringWorktreeId?: string | undefined;
96
- beliefNodeId?: string | undefined;
97
- trustedBypassAccessCheck?: boolean | undefined;
98
- opinion?: {
99
- belief: number;
100
- baseRate: number;
101
- disbelief: number;
102
- uncertainty: number;
103
- } | undefined;
104
- provenance?: {
105
- evidence?: string | undefined;
106
- question?: string | undefined;
107
- contradiction?: string | undefined;
108
- worktree?: string | undefined;
109
- answer?: string | undefined;
110
- } | undefined;
111
- }, {
112
- nodeId: string;
113
- worktreeId: string | undefined;
114
- belief: number;
115
- disbelief: number;
116
- uncertainty: number;
117
- baseRate: number;
118
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic";
119
- triggeringEvidenceId: string | undefined;
120
- triggeringQuestionId: string | undefined;
121
- triggeringAnswerId: string | undefined;
122
- triggeringContradictionId: string | undefined;
123
- triggeringWorktreeId: string | undefined;
124
- rationale: string;
125
- trustedBypassAccessCheck: boolean;
126
- }>;
127
127
  };
128
128
  type ProjectionRegistry = typeof projections;
129
129
 
@@ -71,11 +71,39 @@ var createEvidenceInputSchemaBase = z.object({
71
71
  metadata: jsonRecordSchema.optional(),
72
72
  trustedBypassAccessCheck: z.boolean().optional()
73
73
  }).passthrough();
74
- function hasNonzeroWeight(value) {
75
- return typeof value === "number" && Number.isFinite(value) && value !== 0;
74
+ function isSignedImpactScore(value) {
75
+ return typeof value === "number" && Number.isFinite(value) && value >= -1 && value <= 1 && value !== 0;
76
76
  }
77
- function hasRelationSignal(value, weight) {
78
- return Boolean(normalizeRelation(value, weight));
77
+ function validateSignedImpactScore(value, ctx, path) {
78
+ if (!isSignedImpactScore(value)) {
79
+ ctx.addIssue({
80
+ code: z.ZodIssueCode.custom,
81
+ message: "evidence-to-belief links require an explicit nonzero signed impact score in [-1, 1]",
82
+ path
83
+ });
84
+ return false;
85
+ }
86
+ return true;
87
+ }
88
+ function validateRelationImpactConsistency(relation, weight, ctx, path) {
89
+ const normalized = normalizeRelationAlias(relation);
90
+ if (!normalized || !isSignedImpactScore(weight)) {
91
+ return;
92
+ }
93
+ if (normalized === "supports" && weight < 0) {
94
+ ctx.addIssue({
95
+ code: z.ZodIssueCode.custom,
96
+ message: "supporting evidence requires a positive impact score",
97
+ path
98
+ });
99
+ }
100
+ if (normalized === "contradicts" && weight > 0) {
101
+ ctx.addIssue({
102
+ code: z.ZodIssueCode.custom,
103
+ message: "contradicting evidence requires a negative impact score",
104
+ path
105
+ });
106
+ }
79
107
  }
80
108
  var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
81
109
  (input, ctx) => {
@@ -92,13 +120,27 @@ var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
92
120
  input.linkedBeliefNodeId || kind === "belief" || kind === "unknown" && target
93
121
  );
94
122
  const weight = typeof input.weight === "number" ? input.weight : void 0;
95
- if (linksPrimaryBelief && !hasRelationSignal(input.evidenceRelation, weight)) {
123
+ const hasBeliefRelations = (input.beliefRelations?.length ?? 0) > 0;
124
+ if (!linksPrimaryBelief && !hasBeliefRelations) {
125
+ ctx.addIssue({
126
+ code: z.ZodIssueCode.custom,
127
+ message: "create_evidence requires at least one linked belief; evidence cannot be created as an orphan or linked only to a question/worktree",
128
+ path: ["linkedBeliefNodeId"]
129
+ });
130
+ }
131
+ if (kind === "question" || kind === "worktree") {
96
132
  ctx.addIssue({
97
133
  code: z.ZodIssueCode.custom,
98
- message: "belief-targeted evidence requires evidenceRelation='supports'|'contradicts' or a nonzero signed weight",
99
- path: ["evidenceRelation"]
134
+ message: "create_evidence targetId must be a belief. Link evidence to questions/worktrees only after the evidence has a belief impact edge.",
135
+ path: ["targetId"]
100
136
  });
101
137
  }
138
+ if (linksPrimaryBelief) {
139
+ validateSignedImpactScore(weight, ctx, ["weight"]);
140
+ validateRelationImpactConsistency(input.evidenceRelation, weight, ctx, [
141
+ "weight"
142
+ ]);
143
+ }
102
144
  input.beliefRelations?.forEach((relation, index) => {
103
145
  const beliefNodeId = relation.beliefNodeId ?? relation.beliefId ?? relation.targetId;
104
146
  if (!beliefNodeId) {
@@ -109,15 +151,18 @@ var createEvidenceInputSchema = createEvidenceInputSchemaBase.superRefine(
109
151
  });
110
152
  }
111
153
  const relationWeight = typeof relation.weight === "number" ? relation.weight : void 0;
112
- if (beliefNodeId && !hasRelationSignal(
113
- relation.evidenceRelation ?? relation.relation,
114
- relationWeight
115
- )) {
116
- ctx.addIssue({
117
- code: z.ZodIssueCode.custom,
118
- message: "beliefRelations entries require evidenceRelation='supports'|'contradicts' or a nonzero signed weight",
119
- path: ["beliefRelations", index, "evidenceRelation"]
120
- });
154
+ if (beliefNodeId) {
155
+ validateSignedImpactScore(relationWeight, ctx, [
156
+ "beliefRelations",
157
+ index,
158
+ "weight"
159
+ ]);
160
+ validateRelationImpactConsistency(
161
+ relation.evidenceRelation ?? relation.relation,
162
+ relationWeight,
163
+ ctx,
164
+ ["beliefRelations", index, "weight"]
165
+ );
121
166
  }
122
167
  });
123
168
  }
@@ -171,18 +216,28 @@ function targetKind(targetId) {
171
216
  }
172
217
  return "unknown";
173
218
  }
174
- function normalizeRelation(value, weight) {
219
+ function normalizeRelationAlias(value) {
175
220
  if (value === "supports" || value === "supporting") {
176
221
  return "supports";
177
222
  }
178
223
  if (value === "contradicts" || value === "contradicting") {
179
224
  return "contradicts";
180
225
  }
226
+ return void 0;
227
+ }
228
+ function normalizeRelation(value, weight) {
229
+ const alias = normalizeRelationAlias(value);
230
+ if (alias) {
231
+ return alias;
232
+ }
181
233
  if (weight === void 0 || !hasNonzeroWeight(weight)) {
182
234
  return void 0;
183
235
  }
184
236
  return weight < 0 ? "contradicts" : "supports";
185
237
  }
238
+ function hasNonzeroWeight(value) {
239
+ return typeof value === "number" && Number.isFinite(value) && value !== 0;
240
+ }
186
241
  function normalizeConfidence(confidence, weight) {
187
242
  if (confidence !== void 0) {
188
243
  return Math.min(1, Math.max(0, confidence));
@@ -209,6 +264,7 @@ function normalizeBeliefRelation(relation) {
209
264
  beliefNodeId,
210
265
  relation: evidenceRelation,
211
266
  confidence: normalizeConfidence(relation.confidence, weight),
267
+ weight,
212
268
  rationale: relation.rationale
213
269
  });
214
270
  }
@@ -257,6 +313,7 @@ var createEvidenceProjection = defineProjection({
257
313
  linkedBeliefNodeId,
258
314
  evidenceRelation,
259
315
  confidence,
316
+ weight,
260
317
  beliefRelations: beliefRelations && beliefRelations.length > 0 ? beliefRelations : void 0,
261
318
  rationale: input.rationale,
262
319
  trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true
@@ -286,12 +343,14 @@ var createEvidenceProjection = defineProjection({
286
343
  v.literal("contradicts")
287
344
  )
288
345
  ),
346
+ weight: v.optional(v.number()),
289
347
  beliefRelations: v.optional(
290
348
  v.array(
291
349
  v.object({
292
350
  beliefNodeId: v.string(),
293
351
  relation: v.union(v.literal("supports"), v.literal("contradicts")),
294
352
  confidence: v.optional(v.number()),
353
+ weight: v.number(),
295
354
  rationale: v.optional(v.string())
296
355
  })
297
356
  )
@@ -409,7 +468,7 @@ var slOpinionProjectionSchema = z.object({
409
468
  uncertainty: z.number(),
410
469
  baseRate: z.number()
411
470
  });
412
- var modulateConfidenceInputObjectSchema = z.object({
471
+ var appendSlScoringInputObjectSchema = z.object({
413
472
  nodeId: z.string().optional(),
414
473
  beliefNodeId: z.string().optional(),
415
474
  worktreeId: z.string().optional(),
@@ -428,23 +487,23 @@ var modulateConfidenceInputObjectSchema = z.object({
428
487
  rationale: z.string(),
429
488
  trustedBypassAccessCheck: z.boolean().optional()
430
489
  });
431
- var modulateConfidenceInputSchema = modulateConfidenceInputObjectSchema.superRefine((input, ctx) => {
490
+ var appendSlScoringInputSchema = appendSlScoringInputObjectSchema.superRefine((input, ctx) => {
432
491
  if (hasProvenance(input)) {
433
492
  return;
434
493
  }
435
494
  ctx.addIssue({
436
495
  code: z.ZodIssueCode.custom,
437
- message: "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance",
496
+ message: "append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance",
438
497
  path: ["provenance"]
439
498
  });
440
499
  });
441
- var modulateConfidenceProjection = defineProjection({
442
- contractName: "modulate_confidence",
443
- inputSchema: modulateConfidenceInputSchema,
500
+ var appendSlScoringProjection = defineProjection({
501
+ contractName: "append_sl_scoring",
502
+ inputSchema: appendSlScoringInputSchema,
444
503
  project: (input) => {
445
504
  const nodeId = input.beliefNodeId ?? input.nodeId;
446
505
  if (!nodeId) {
447
- throw new Error("modulate_confidence requires beliefNodeId or nodeId");
506
+ throw new Error("append_sl_scoring requires beliefNodeId or nodeId");
448
507
  }
449
508
  const opinion = input.opinion ?? {
450
509
  belief: requireNumber(input.belief, "belief"),
@@ -501,14 +560,14 @@ var modulateConfidenceProjection = defineProjection({
501
560
  });
502
561
  function requireNumber(value, field) {
503
562
  if (value === void 0) {
504
- throw new Error(`modulate_confidence requires ${field}`);
563
+ throw new Error(`append_sl_scoring requires ${field}`);
505
564
  }
506
565
  return value;
507
566
  }
508
567
  function assertProvenance(input) {
509
568
  if (!hasProvenance(input)) {
510
569
  throw new Error(
511
- "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance"
570
+ "append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance"
512
571
  );
513
572
  }
514
573
  }
@@ -518,12 +577,12 @@ function hasProvenance(input) {
518
577
 
519
578
  // src/projections/index.ts
520
579
  var projections = {
580
+ append_sl_scoring: appendSlScoringProjection,
521
581
  create_evidence: createEvidenceProjection,
522
582
  list_beliefs: listBeliefsProjection,
523
- list_tasks: listTasksProjection,
524
- modulate_confidence: modulateConfidenceProjection
583
+ list_tasks: listTasksProjection
525
584
  };
526
585
 
527
- export { createEvidenceProjection, defineProjection, listBeliefsProjection, listTasksProjection, modulateConfidenceProjection, projections };
586
+ export { appendSlScoringProjection, createEvidenceProjection, defineProjection, listBeliefsProjection, listTasksProjection, projections };
528
587
  //# sourceMappingURL=index.js.map
529
588
  //# sourceMappingURL=index.js.map