@kashscript/hudhud 0.1.0 → 0.2.0

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 (44) hide show
  1. package/LICENSE +135 -133
  2. package/README.md +11 -0
  3. package/dist/certificate/certificate.d.ts +11 -4
  4. package/dist/certificate/certificate.d.ts.map +1 -1
  5. package/dist/certificate/certificate.js +21 -18
  6. package/dist/certificate/certificate.js.map +1 -1
  7. package/dist/certificate/html.d.ts.map +1 -1
  8. package/dist/certificate/html.js +1 -2
  9. package/dist/certificate/html.js.map +1 -1
  10. package/dist/errors.d.ts +29 -2
  11. package/dist/errors.d.ts.map +1 -1
  12. package/dist/errors.js +6 -2
  13. package/dist/errors.js.map +1 -1
  14. package/dist/exception/index.d.ts +127 -24
  15. package/dist/exception/index.d.ts.map +1 -1
  16. package/dist/exception/index.js +209 -15
  17. package/dist/exception/index.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/ledger/writer.d.ts +10 -2
  21. package/dist/ledger/writer.d.ts.map +1 -1
  22. package/dist/ledger/writer.js +16 -4
  23. package/dist/ledger/writer.js.map +1 -1
  24. package/dist/runtime/escalation.d.ts +5 -0
  25. package/dist/runtime/escalation.d.ts.map +1 -1
  26. package/dist/runtime/escalation.js +15 -3
  27. package/dist/runtime/escalation.js.map +1 -1
  28. package/dist/sop/compiler.d.ts.map +1 -1
  29. package/dist/sop/compiler.js +2 -2
  30. package/dist/sop/compiler.js.map +1 -1
  31. package/dist/sop/service.d.ts +5 -0
  32. package/dist/sop/service.d.ts.map +1 -1
  33. package/dist/sop/service.js +25 -6
  34. package/dist/sop/service.js.map +1 -1
  35. package/package.json +3 -3
  36. package/src/certificate/certificate.ts +25 -17
  37. package/src/certificate/html.ts +1 -2
  38. package/src/errors.ts +27 -2
  39. package/src/exception/index.ts +315 -33
  40. package/src/index.ts +1 -1
  41. package/src/ledger/writer.ts +24 -4
  42. package/src/runtime/escalation.ts +21 -9
  43. package/src/sop/compiler.ts +2 -1
  44. package/src/sop/service.ts +30 -5
@@ -16,10 +16,19 @@ import { LedgerAppendError } from "../errors";
16
16
  import { SessionMutex } from "./mutex";
17
17
  import { resolvePreviousBlockHash } from "./store";
18
18
  export const ACTOR_CLASSES = ["AGENT", "SYSTEM_KERNEL", "OPERATOR_ADMIN", "COMPLIANCE_AUDITOR"];
19
- /** Build a HostActorSigner from a raw Ed25519 private key. `actorDid` must be a
20
- * did:kash and be registered in the DidRegistry the service verifies against. */
19
+ /** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape
20
+ * (identity-core `DID_KASH_RE` / attest `KASH_DID_PATTERN`). A consumer whose
21
+ * DID method-specific-ids are STRUCTURED (e.g. hierarchical role DIDs such as
22
+ * `did:kash:oreoasis:kernel:host`) injects its own validator — DID-format is an
23
+ * identity-method policy the CONSUMER owns; the ledger's hard gates stay
24
+ * registry-resolution + signature-verification, not string shape. */
25
+ const isCanonicalKashDid = (did) => KASH_DID_PATTERN.test(did);
26
+ /** Build a HostActorSigner from a raw Ed25519 private key. `actorDid` must be
27
+ * accepted by `isValidActorDid` (default: canonical did:kash) and be registered
28
+ * in the DidRegistry the service verifies against. */
21
29
  export function createEd25519HostSigner(opts) {
22
- if (!KASH_DID_PATTERN.test(opts.actorDid)) {
30
+ const isValidActorDid = opts.isValidActorDid ?? isCanonicalKashDid;
31
+ if (!isValidActorDid(opts.actorDid)) {
23
32
  throw new LedgerAppendError("host signer actorDid is not a valid did:kash:… identifier");
24
33
  }
25
34
  return {
@@ -33,13 +42,16 @@ export class ForensicLedgerService {
33
42
  constructor(deps) {
34
43
  this.deps = deps;
35
44
  }
45
+ isValidActorDid(did) {
46
+ return (this.deps.isValidActorDid ?? isCanonicalKashDid)(did);
47
+ }
36
48
  /** Append a caller-pre-signed transition. @throws LedgerAppendError on any
37
49
  * validation / signature / store failure. */
38
50
  async appendTransitionLog(input) {
39
51
  if (typeof input.sessionId !== "string" || input.sessionId.length === 0) {
40
52
  throw new LedgerAppendError("sessionId is required");
41
53
  }
42
- if (typeof input.actorDid !== "string" || !KASH_DID_PATTERN.test(input.actorDid)) {
54
+ if (typeof input.actorDid !== "string" || !this.isValidActorDid(input.actorDid)) {
43
55
  throw new LedgerAppendError("actorDid must be a valid did:kash:… identifier");
44
56
  }
45
57
  if (typeof input.signature !== "string" || input.signature.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/ledger/writer.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,qEAAqE;AACrE,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,yEAAyE;AACzE,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,CAAU,CAAC;AAWzG;kFACkF;AAClF,MAAM,UAAU,uBAAuB,CAAC,IAIvC;IACC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,iBAAiB,CAAC,2DAA2D,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;KAC7D,CAAC;AACJ,CAAC;AAgCD,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,IAA+B;QAA/B,SAAI,GAAJ,IAAI,CAA2B;IAAG,CAAC;IAEhE;kDAC8C;IAC9C,KAAK,CAAC,mBAAmB,CAAC,KAA+B;QACvD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,iBAAiB,CAAC,gDAAgD,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,iBAAiB,CAAC,8BAA8B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,wBAAwB,CACvF,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;gBACtC,MAAM,IAAI,iBAAiB,CACzB,aAAa,KAAK,CAAC,SAAS,iCAAiC,aAAa,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAC5G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY;aACb,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;6BAEyB;IACzB,KAAK,CAAC,qBAAqB,CAAC,KAG3B;QACC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,iBAAiB,CAAC,wDAAwD,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YACxH,MAAM,IAAI,iBAAiB,CAAC,wCAAwC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,wBAAwB,CACvF,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,KAAK,CAAC,SAAS,CAChB,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBAClC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,iBAAiB,EAAE,YAAY;gBAC/B,eAAe,EAAE,KAAK,CAAC,eAAe;aACvC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,mBAAmB,CAAC;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,SAAS;gBACT,YAAY;aACb,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;qDACiD;IACzC,KAAK,CAAC,mBAAmB,CAAC,IAQjC;QACC,MAAM,2BAA2B,GAAG,MAAM,cAAc,CACtD;YACE,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,EACD,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC;gBAC1B,aAAa,EAAE,IAAI,CAAC,SAAS;gBAC7B,OAAO,EAAE;oBACP,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,iBAAiB,EAAE,IAAI,CAAC,YAAY;oBACpC,eAAe,EAAE,IAAI,CAAC,eAAe;iBACtC;gBACD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,MAAM,IAAI,iBAAiB,CAAC,0CAA0C,MAAM,GAAG,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC1C,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,iBAAiB,EAAE,IAAI,CAAC,YAAY;gBACpC,2BAA2B;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,iBAAiB,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACnH,CAAC;QAED,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;YAC/D,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,MAAM,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAED;;;4DAGwD;IACxD,KAAK,CAAC,uBAAuB,CAAC,SAAiB;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACpE,OAAO,uBAAuB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;CACF"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/ledger/writer.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,9 @@ export interface BuildHumanApprovalEnvelopeInput {
26
26
  readonly publicKey: Uint8Array;
27
27
  };
28
28
  readonly ttlMs?: number;
29
+ /** Override the DID acceptance policy for agent/operator `did` (default:
30
+ * canonical `did:kash`). */
31
+ readonly isValidDid?: (did: string) => boolean;
29
32
  }
30
33
  /**
31
34
  * Build the two-key `SignedActionEnvelope` that authorizes a resume of a
@@ -49,6 +52,8 @@ export interface AppendOperatorSignoffInput {
49
52
  /** MANDATORY classification (required `failureClass`, no "unclassified"). */
50
53
  readonly classification: ExceptionClassificationInput;
51
54
  readonly exceptionClassificationStore: ExceptionClassificationStore;
55
+ /** Override the DID acceptance policy for operator `did` (default: canonical). */
56
+ readonly isValidDid?: (did: string) => boolean;
52
57
  }
53
58
  /**
54
59
  * Append a SIGNED ledger row recording the operator's sign-off (OPERATOR key,
@@ -1 +1 @@
1
- {"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,16 @@ import { PermissionGate, assembleEnvelope, stripDerivedFields, } from "@kashscri
20
20
  import { NEURON_DST } from "@kashscript/neuron/schemas";
21
21
  import { assertFailureClass, buildSignedClassification, } from "../exception";
22
22
  import { resolvePreviousBlockHash } from "../ledger/store";
23
+ // Both identities are `did:kash` keys so the operator sign-off is a first-class
24
+ // ledger actor. The two-key guarantee comes from DISTINCTNESS, not a DID
25
+ // namespace: the agent key is the one the host holds; the operator key is
26
+ // SEPARATE, so the host cannot mint the operator (invoker) signature. Enforced
27
+ // below by requiring agent.did ≠ operator.did (their derived DIDs differ because
28
+ // their keys do). The DID-STRING shape is an identity-method policy the consumer
29
+ // owns (`isValidDid`, default canonical); it is NOT a security boundary here.
30
+ /** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape.
31
+ * Consumers with structured DIDs (e.g. `did:kash:operator:…`) inject their own. */
32
+ const isCanonicalKashDid = (did) => KASH_DID_PATTERN.test(did);
23
33
  export class EscalationError extends Error {
24
34
  code;
25
35
  detail;
@@ -46,10 +56,11 @@ function deriveKashDid(publicKey) {
46
56
  * operator), so forging human judgment would require the operator private key.
47
57
  */
48
58
  export async function buildHumanApprovalEnvelope(input) {
49
- if (!KASH_DID_PATTERN.test(input.agent.did)) {
59
+ const isValidDid = input.isValidDid ?? isCanonicalKashDid;
60
+ if (!isValidDid(input.agent.did)) {
50
61
  throw new EscalationError("AGENT_DID_INVALID", "agent.did must be a valid did:kash identifier");
51
62
  }
52
- if (!KASH_DID_PATTERN.test(input.operator.did)) {
63
+ if (!isValidDid(input.operator.did)) {
53
64
  throw new EscalationError("OPERATOR_DID_INVALID", "operator.did must be a valid did:kash identifier");
54
65
  }
55
66
  if (input.agent.did === input.operator.did) {
@@ -87,7 +98,8 @@ export async function buildHumanApprovalEnvelope(input) {
87
98
  * The mandatory `failureClass` gate fails-fast before any row is written.
88
99
  */
89
100
  export async function appendOperatorSignoff(input) {
90
- if (!KASH_DID_PATTERN.test(input.operator.did)) {
101
+ const isValidDid = input.isValidDid ?? isCanonicalKashDid;
102
+ if (!isValidDid(input.operator.did)) {
91
103
  throw new EscalationError("OPERATOR_DID_INVALID", "operator.did must be a valid did:kash identifier");
92
104
  }
93
105
  assertFailureClass(input.classification.failureClass);
@@ -1 +1 @@
1
- {"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;QAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAOD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsC5F"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;QAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAOD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuC5F"}
@@ -22,7 +22,7 @@ const LIST_ITEM_PATTERN = /^\s*(?:\d+[.)]|[-*•])\s+(.+)$/;
22
22
  export async function compileSopStructural(input) {
23
23
  const lines = input.sopText.split(/\r?\n/);
24
24
  if (input.sopText.trim().length === 0) {
25
- throw new SopCompilationError("SOP text is empty or whitespace-only — at least one step required");
25
+ throw new SopCompilationError("SOP text is empty or whitespace-only — at least one step required", { kind: "empty" });
26
26
  }
27
27
  const nodes = [];
28
28
  for (let i = 0; i < lines.length; i++) {
@@ -32,7 +32,7 @@ export async function compileSopStructural(input) {
32
32
  }
33
33
  }
34
34
  if (nodes.length === 0) {
35
- throw new SopCompilationError("No numbered/bulleted steps detected — structural compiler requires `1.` / `-` / `*` / `•` prefixes");
35
+ throw new SopCompilationError("No numbered/bulleted steps detected — structural compiler requires `1.` / `-` / `*` / `•` prefixes", { kind: "no-steps" });
36
36
  }
37
37
  const edges = [];
38
38
  for (let i = 0; i < nodes.length - 1; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gEAAgE;AAChE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAyBhD,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAE5C,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAc1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAsB;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAAC,mEAAmE,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAC3B,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAY;QACvB,KAAK;QACL,KAAK;QACL,IAAI,EAAE;YACJ,YAAY,EAAE,oBAAoB;YAClC,eAAe,EAAE,2BAA2B;YAC5C,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,SAAS;SACV;KACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gEAAgE;AAChE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAyBhD,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAE5C,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAc1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAsB;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAAC,mEAAmE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAC3B,oGAAoG,EACpG,EAAE,IAAI,EAAE,UAAU,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAY;QACvB,KAAK;QACL,KAAK;QACL,IAAI,EAAE;YACJ,YAAY,EAAE,oBAAoB;YAClC,eAAe,EAAE,2BAA2B;YAC5C,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,SAAS;SACV;KACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
@@ -4,6 +4,10 @@ export interface SopCompilerServiceOptions {
4
4
  /** Seam for the deferred LLM decomposer wire-up (not yet invoked). */
5
5
  readonly llmProvider?: LLMProvider;
6
6
  readonly llmModel?: string;
7
+ /** Override the `institutionDid` acceptance policy (default: canonical
8
+ * `did:kash`). A consumer with structured institution DIDs injects its own —
9
+ * DID-string shape is an identity-method policy the consumer owns. */
10
+ readonly isValidInstitutionDid?: (did: string) => boolean;
7
11
  }
8
12
  export interface CompiledCorporateManual {
9
13
  readonly taskDag: TaskDag;
@@ -13,6 +17,7 @@ export interface CompiledCorporateManual {
13
17
  }
14
18
  export declare class SopCompilerService {
15
19
  private readonly llmBackendActive;
20
+ private readonly isValidInstitutionDid;
16
21
  constructor(opts?: SopCompilerServiceOptions);
17
22
  /** Whether an LLM provider seam is plumbed. */
18
23
  hasLlmBackend(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAE/B,IAAI,GAAE,yBAA8B;IAIhD,+CAA+C;IACxC,aAAa,IAAI,OAAO;IAI/B;uEACmE;IACtD,sBAAsB,CACjC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC;CAoCpC;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;kFACkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAmB3F;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;4EAC4E;AAC5E,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EACjC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,WAAW,GAAG,IAAI,CAmDpB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;2EAEuE;IACvE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D;AAKD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA2B;gBAErD,IAAI,GAAE,yBAA8B;IAKhD,+CAA+C;IACxC,aAAa,IAAI,OAAO;IAI/B;uEACmE;IACtD,sBAAsB,CACjC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC;CAoDpC;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;kFACkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAmB3F;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;4EAC4E;AAC5E,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EACjC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,WAAW,GAAG,IAAI,CAmDpB"}
@@ -11,14 +11,18 @@
11
11
  import { KASH_DID_PATTERN } from "@kashscript/attest";
12
12
  import { SopCompilationError } from "../errors";
13
13
  import { compileSopStructural } from "./compiler";
14
+ /** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape. */
15
+ const isCanonicalKashDid = (did) => KASH_DID_PATTERN.test(did);
14
16
  /** Match `goto N`, `goto step N`, `go to step N`, `→ step N`. Captures `N`. */
15
17
  const GOTO_MARKER_PATTERN = /(?:goto|go\s+to|→)\s*(?:step\s*)?(\d{1,4})/gi;
16
18
  /** Semver MAJOR.MINOR.PATCH. */
17
19
  const SEMVER_PATTERN = /^\d+\.\d+\.\d+$/;
18
20
  export class SopCompilerService {
19
21
  llmBackendActive;
22
+ isValidInstitutionDid;
20
23
  constructor(opts = {}) {
21
24
  this.llmBackendActive = opts.llmProvider !== undefined;
25
+ this.isValidInstitutionDid = opts.isValidInstitutionDid ?? isCanonicalKashDid;
22
26
  }
23
27
  /** Whether an LLM provider seam is plumbed. */
24
28
  hasLlmBackend() {
@@ -28,16 +32,22 @@ export class SopCompilerService {
28
32
  * @throws SopCompilationError on nil / empty / cyclical input. */
29
33
  async compileCorporateManual(institutionDid, rawText, version) {
30
34
  if (typeof institutionDid !== "string" || institutionDid.length === 0) {
31
- throw new SopCompilationError("institutionDid is required (non-empty did:kash:… identifier)");
35
+ throw new SopCompilationError("institutionDid is required (non-empty did:kash:… identifier)", {
36
+ kind: "invalid-institution-did",
37
+ });
32
38
  }
33
- if (!KASH_DID_PATTERN.test(institutionDid)) {
34
- throw new SopCompilationError("institutionDid is not a valid did:kash:… identifier");
39
+ if (!this.isValidInstitutionDid(institutionDid)) {
40
+ throw new SopCompilationError("institutionDid is not a valid did:kash:… identifier", {
41
+ kind: "invalid-institution-did",
42
+ });
35
43
  }
36
44
  if (typeof version !== "string" || version.length === 0 || !SEMVER_PATTERN.test(version)) {
37
- throw new SopCompilationError("version must be a semver MAJOR.MINOR.PATCH string");
45
+ throw new SopCompilationError("version must be a semver MAJOR.MINOR.PATCH string", {
46
+ kind: "invalid-version",
47
+ });
38
48
  }
39
49
  if (typeof rawText !== "string") {
40
- throw new SopCompilationError("rawText is required and must be a string");
50
+ throw new SopCompilationError("rawText is required and must be a string", { kind: "invalid-input" });
41
51
  }
42
52
  // Structural compile (throws SopCompilationError on empty / no steps).
43
53
  const { taskDag: structural, sopSha256 } = await compileSopStructural({
@@ -51,7 +61,16 @@ export class SopCompilerService {
51
61
  ];
52
62
  const cycle = detectCycle(structural.nodes, allEdges);
53
63
  if (cycle !== null) {
54
- throw new SopCompilationError(`SOP TaskDAG contains a cycle: ${cycle.path.join(" ")} (closing edge ${cycle.closingFrom} → ${cycle.closingTo})`);
64
+ // The offending goto lives on the source line of the node whose edge
65
+ // closes the cycle — surface it so a consumer can point at the raw line.
66
+ const closingNode = structural.nodes.find((n) => n.id === cycle.closingFrom);
67
+ throw new SopCompilationError(`SOP TaskDAG contains a cycle: ${cycle.path.join(" → ")} (closing edge ${cycle.closingFrom} → ${cycle.closingTo})`, {
68
+ kind: "cycle",
69
+ cyclePath: cycle.path,
70
+ closingFrom: cycle.closingFrom,
71
+ closingTo: cycle.closingTo,
72
+ lineIndex: closingNode?.sourceLine ?? null,
73
+ });
55
74
  }
56
75
  const taskDag = { nodes: structural.nodes, edges: allEdges, meta: structural.meta };
57
76
  return { taskDag, sopSha256, institutionDid, version };
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kashscript/hudhud",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "The Agent Protocol — the accountable agent runtime. SOP compiler, MCP allowlist + circuit breaker, PII-redaction interceptor, a signed action ledger + forensic scan (on @kashscript/attest), exception classification, AIUC-1 work certificates, DID registry, and a neuron-kernel work runtime. Agent auth via @kashscript/identity-server MCP OAuth 2.1 tokens. Ventures import hudhud, never raw neuron. Commercial (SSLA Schedule B).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -79,8 +79,8 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "@kashscript/identity-core": "0.3.1",
82
- "@kashscript/attest": "0.1.0",
83
- "@kashscript/identity-server": "0.1.0",
82
+ "@kashscript/attest": "0.1.7",
83
+ "@kashscript/identity-server": "0.2.0",
84
84
  "@kashscript/neuron": "0.1.1"
85
85
  },
86
86
  "peerDependencies": {
@@ -16,9 +16,12 @@ import type { DsseEnvelope, DsseSigner } from "@kashscript/attest";
16
16
 
17
17
  import type { AnchorRecord } from "../anchor";
18
18
  import { FAILURE_CLASSES } from "../exception";
19
- import type { ExceptionClassificationRecord, FailureClass } from "../exception";
19
+ import type { AnyExceptionClassificationRecord, FailureClass } from "../exception";
20
20
 
21
- export const WORK_CERTIFICATE_FORMAT_VERSION = "kash-work-certificate/1" as const;
21
+ /** /2 (2026-09-23, d43 §4.7): the summary no longer carries `automationRatePct`.
22
+ * /1 certificates still verify — including their rate, when present. */
23
+ export const WORK_CERTIFICATE_FORMAT_VERSION = "kash-work-certificate/2" as const;
24
+ export const WORK_CERTIFICATE_FORMAT_VERSION_V1 = "kash-work-certificate/1" as const;
22
25
  export const WORK_CERTIFICATE_PAYLOAD_TYPE = "application/vnd.kash.work-certificate+json" as const;
23
26
 
24
27
  /** The AIUC-1 standard's canonical reference (web-verified). */
@@ -53,7 +56,7 @@ export interface CertifiedWorkRecord {
53
56
  readonly ledgerRowCount: number;
54
57
  readonly ledgerTipHash: string;
55
58
  readonly signoff: { readonly operatorDid: string; readonly ledgerStepIndex: number } | null;
56
- readonly classification: ExceptionClassificationRecord | null;
59
+ readonly classification: AnyExceptionClassificationRecord | null;
57
60
  readonly anchor: AnchorRecord | null;
58
61
  }
59
62
 
@@ -75,7 +78,11 @@ export interface BuildWorkCertificateInput {
75
78
  export interface WorkCertificateSummary {
76
79
  readonly workVolumeDelivered: number;
77
80
  readonly workVolumeDeclined: number;
78
- readonly automationRatePct: number;
81
+ /** @deprecated Present only on `kash-work-certificate/1` certificates; never
82
+ * minted since /2 — founder decision 2026-09-23 under d43 §4.7 (no
83
+ * productivity metric). Still recomputed on verify when present, so an old
84
+ * certificate cannot claim a rate its own outcomes do not support. */
85
+ readonly automationRatePct?: number;
79
86
  readonly exceptionCount: number;
80
87
  readonly exceptionsByClass: Record<FailureClass, number>;
81
88
  readonly humanSignoffCount: number;
@@ -138,26 +145,23 @@ function emptyClassMix(): Record<FailureClass, number> {
138
145
  }
139
146
 
140
147
  function summarize(records: ReadonlyArray<CertifiedWorkRecord>, slaTargetPct: number | undefined): WorkCertificateSummary {
141
- let autonomous = 0;
142
- let withSignoff = 0;
148
+ let delivered = 0;
143
149
  let declined = 0;
144
150
  let slaMet = 0;
145
151
  let anchored = 0;
146
152
  const exceptionsByClass = emptyClassMix();
147
153
  for (const r of records) {
148
- if (r.status === "delivered_autonomous") autonomous += 1;
149
- else if (r.status === "delivered_with_signoff") withSignoff += 1;
150
- else declined += 1;
154
+ if (r.status === "declined") declined += 1;
155
+ else delivered += 1;
151
156
  if (r.slaMet) slaMet += 1;
152
157
  if (r.anchor !== null) anchored += 1;
153
- if (r.classification !== null) exceptionsByClass[r.classification.failureClass] += 1;
158
+ const fc = r.classification?.failureClass;
159
+ if (fc !== undefined) exceptionsByClass[fc] += 1;
154
160
  }
155
- const delivered = autonomous + withSignoff;
156
161
  const total = records.length;
157
162
  return {
158
163
  workVolumeDelivered: delivered,
159
164
  workVolumeDeclined: declined,
160
- automationRatePct: delivered === 0 ? 0 : round1((autonomous / delivered) * 100),
161
165
  exceptionCount: records.filter((r) => r.classification !== null).length,
162
166
  exceptionsByClass,
163
167
  humanSignoffCount: records.filter((r) => r.signoff !== null).length,
@@ -179,9 +183,9 @@ function mapAiuc1Coverage(records: ReadonlyArray<CertifiedWorkRecord>, summary:
179
183
  case "B":
180
184
  return { ...d, status: "evidenced", evidence: [`Every action Ed25519-signed into an append-only, hash-chained ledger (${records.reduce((n, r) => n + r.ledgerRowCount, 0)} signed rows this period).`, anchoredEvidence] };
181
185
  case "C":
182
- return { ...d, status: "evidenced", evidence: [`${summary.exceptionCount} exception(s) flagged for human review and resolved this period; each classified under a fixed risk taxonomy (judgment / gap-filling / ambiguous).`, "Restricted actions suspend for human judgment rather than proceed autonomously."] };
186
+ return { ...d, status: "evidenced", evidence: [`${summary.exceptionCount} exception(s) flagged for human review and resolved this period; each classified and signed by a named human (and, where a model was involved, by where the model failed).`, "Restricted actions suspend for human judgment rather than proceed autonomously."] };
183
187
  case "D":
184
- return { ...d, status: "evidenced", evidence: ["Tools restricted to a per-provider allowlist (scope-gating): an out-of-allowlist or restricted tool call cannot be dispatched by construction.", `Automation rate this period: ${summary.automationRatePct}% delivered without human intervention.`] };
188
+ return { ...d, status: "evidenced", evidence: ["Tools restricted to a per-provider allowlist (scope-gating): an out-of-allowlist or restricted tool call cannot be dispatched by construction."] };
185
189
  case "E":
186
190
  return { ...d, status: "evidenced", evidence: ["Complete signed activity log (the ledger) for every work item; a self-contained audit bundle is independently verifiable offline.", `${summary.humanSignoffCount} human sign-off(s), each a SECOND-key signed ledger row (the host cannot forge human judgment).`] };
187
191
  case "F":
@@ -273,7 +277,6 @@ function recomputeCountsMatch(body: WorkCertificateBody): ReadonlyArray<string>
273
277
  const o = body.outcomes;
274
278
  const delivered = o.filter((x) => x.status !== "declined").length;
275
279
  const declined = o.filter((x) => x.status === "declined").length;
276
- const autonomous = o.filter((x) => x.status === "delivered_autonomous").length;
277
280
  const slaMet = o.filter((x) => x.slaMet).length;
278
281
  const exceptionCount = o.filter((x) => x.classificationId !== null).length;
279
282
  const signoffCount = o.filter((x) => x.signoffLedgerStepIndex !== null).length;
@@ -288,8 +291,13 @@ function recomputeCountsMatch(body: WorkCertificateBody): ReadonlyArray<string>
288
291
  check("exceptionCount", exceptionCount, s.exceptionCount);
289
292
  check("humanSignoffCount", signoffCount, s.humanSignoffCount);
290
293
  check("anchoredCount", anchored, s.anchoredCount);
291
- const wantAutomation = delivered === 0 ? 0 : round1((autonomous / delivered) * 100);
292
- if (wantAutomation !== s.automationRatePct) mismatches.push(`automationRatePct: recomputed=${wantAutomation} vs summary=${s.automationRatePct}`);
294
+ // /1 certificates carried a rate; it is still held to its own outcomes. /2
295
+ // never mints one, and a /2 body that claims one is checked all the same.
296
+ if (s.automationRatePct !== undefined) {
297
+ const autonomous = o.filter((x) => x.status === "delivered_autonomous").length;
298
+ const wantAutomation = delivered === 0 ? 0 : round1((autonomous / delivered) * 100);
299
+ if (wantAutomation !== s.automationRatePct) mismatches.push(`automationRatePct: recomputed=${wantAutomation} vs summary=${s.automationRatePct}`);
300
+ }
293
301
  const wantSla = total === 0 ? 0 : round1((slaMet / total) * 100);
294
302
  if (wantSla !== s.slaAdherencePct) mismatches.push(`slaAdherencePct: recomputed=${wantSla} vs summary=${s.slaAdherencePct}`);
295
303
  const classMix = emptyClassMix();
@@ -89,7 +89,7 @@ export function renderWorkCertificateHtml(body: WorkCertificateBody, brand: Work
89
89
  .band .verifiable { margin-top: 12px; display: inline-block; font-size: 12px; background: rgba(255,255,255,.16); padding: 4px 10px; border-radius: 3px; }
90
90
  .body { padding: 28px 40px 40px; }
91
91
  h2 { font-size: 15px; text-transform: uppercase; letter-spacing: .06em; color: var(--accent); border-bottom: 2px solid #eceff2; padding-bottom: 6px; margin: 30px 0 14px; }
92
- .cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
92
+ .cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
93
93
  .card { border: 1px solid #e6eaee; border-radius: 5px; padding: 14px; }
94
94
  .card-v { font-size: 24px; font-weight: 680; color: var(--accent); }
95
95
  .card-l { font-size: 12px; font-weight: 600; margin-top: 2px; }
@@ -124,7 +124,6 @@ export function renderWorkCertificateHtml(body: WorkCertificateBody, brand: Work
124
124
  <h2>Delivered work this period</h2>
125
125
  <div class="cards">
126
126
  ${metricCard("Outcomes delivered", String(s.workVolumeDelivered), `${s.workVolumeDeclined} declined at sign-off`)}
127
- ${metricCard("Automation rate", `${s.automationRatePct}%`, "delivered without human touch")}
128
127
  ${metricCard("Exceptions", String(s.exceptionCount), `${s.humanSignoffCount} human sign-off(s)`)}
129
128
  ${metricCard("SLA adherence", `${s.slaAdherencePct}%`, s.slaTargetPct === null ? "no target set" : `target ${s.slaTargetPct}%`)}
130
129
  </div>
package/src/errors.ts CHANGED
@@ -19,11 +19,36 @@ export class HudhudError extends Error {
19
19
  }
20
20
  }
21
21
 
22
- /** Thrown when an SOP manual cannot be compiled (cycle, malformed goto, empty). */
22
+ /** Structured diagnostic for a SOP compilation failure. A consuming venture maps
23
+ * this onto its own wire envelope (e.g. an "empty" vs "error" track + a
24
+ * line-indexed cycle diagnostic) — the message alone is lossy. */
25
+ export type SopCompilationDetail =
26
+ | { readonly kind: "empty" }
27
+ | { readonly kind: "no-steps" }
28
+ | { readonly kind: "invalid-institution-did" }
29
+ | { readonly kind: "invalid-version" }
30
+ | { readonly kind: "invalid-input" }
31
+ | {
32
+ readonly kind: "cycle";
33
+ /** Node ids on the cycle, in traversal order. */
34
+ readonly cyclePath: ReadonlyArray<string>;
35
+ /** The edge that closes the cycle (`closingFrom` → `closingTo`). */
36
+ readonly closingFrom: string;
37
+ readonly closingTo: string;
38
+ /** 1-indexed source line of the node whose goto closes the cycle, or null
39
+ * if it could not be resolved. */
40
+ readonly lineIndex: number | null;
41
+ };
42
+
43
+ /** Thrown when an SOP manual cannot be compiled (cycle, malformed goto, empty).
44
+ * `detail` carries a structured discriminant so a consumer can build a precise
45
+ * wire diagnostic without parsing the message. */
23
46
  export class SopCompilationError extends HudhudError {
24
- constructor(message: string) {
47
+ readonly detail: SopCompilationDetail | null;
48
+ constructor(message: string, detail: SopCompilationDetail | null = null) {
25
49
  super("SOP_COMPILATION", message);
26
50
  this.name = "SopCompilationError";
51
+ this.detail = detail;
27
52
  }
28
53
  }
29
54