@sentropic/h2a 0.1.12 → 0.1.14

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.
@@ -51,6 +51,12 @@ export declare const H2A_GOVERNANCE_BOUNDARY_ITEMS: readonly [{
51
51
  readonly status: "v1-shipped";
52
52
  readonly summary: "Deterministic taxonomy for peer, delegated, shared, federated, quorum, and public-authority modes.";
53
53
  readonly references: readonly ["DEC-042"];
54
+ }, {
55
+ readonly id: "session-protocol";
56
+ readonly layer: "PROTOCOL";
57
+ readonly status: "v1-shipped";
58
+ readonly summary: "Session lifecycle, heartbeat-based presence, expiry semantics, and notification topics; transport-specific producers (presence files, MCP push) are implementation.";
59
+ readonly references: readonly ["DEC-050"];
54
60
  }, {
55
61
  readonly id: "policy-precedence";
56
62
  readonly layer: "POLICY";
@@ -1 +1 @@
1
- {"version":3,"file":"governance-boundary.d.ts","sourceRoot":"","sources":["../src/governance-boundary.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,mDAIjC,CAAC;AAEX,eAAO,MAAM,gCAAgC,mDAInC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsI0B,CAAC;AAErE,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,GACb,mCAAmC,GAAG,SAAS,CAEjD;AAED,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,mCAAmC,EAAE,CAUhD"}
1
+ {"version":3,"file":"governance-boundary.d.ts","sourceRoot":"","sources":["../src/governance-boundary.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,mDAIjC,CAAC;AAEX,eAAO,MAAM,gCAAgC,mDAInC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6I0B,CAAC;AAErE,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,GACb,mCAAmC,GAAG,SAAS,CAEjD;AAED,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,mCAAmC,EAAE,CAUhD"}
@@ -58,6 +58,13 @@ export const H2A_GOVERNANCE_BOUNDARY_ITEMS = Object.freeze([
58
58
  summary: "Deterministic taxonomy for peer, delegated, shared, federated, quorum, and public-authority modes.",
59
59
  references: ["DEC-042"]
60
60
  },
61
+ {
62
+ id: "session-protocol",
63
+ layer: "PROTOCOL",
64
+ status: "v1-shipped",
65
+ summary: "Session lifecycle, heartbeat-based presence, expiry semantics, and notification topics; transport-specific producers (presence files, MCP push) are implementation.",
66
+ references: ["DEC-050"]
67
+ },
61
68
  {
62
69
  id: "policy-precedence",
63
70
  layer: "POLICY",
@@ -1 +1 @@
1
- {"version":3,"file":"governance-boundary.js","sourceRoot":"","sources":["../src/governance-boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"governance-boundary.js","sourceRoot":"","sources":["../src/governance-boundary.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,UAAU;IACV,QAAQ;IACR,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,YAAY;IACZ,SAAS;IACT,aAAa;CACL,CAAC;AAeX,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,wEAAwE;QACjF,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,oEAAoE;QAC7E,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KAC9C;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,yFAAyF;QAClG,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,kGAAkG;QAC3G,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KAC9C;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,+DAA+D;QACxE,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KAC9C;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,kEAAkE;QAC3E,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,oGAAoG;QAC7G,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,qKAAqK;QAC9K,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,yGAAyG;QAClH,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KAC9C;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,kHAAkH;QAC3H,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KACzD;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,yJAAyJ;QAClK,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KAC/E;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,0JAA0J;QACnK,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KACzD;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,+NAA+N;QACxO,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;KACzD;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,0GAA0G;QACnH,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,yGAAyG;QAClH,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,oHAAoH;QAC7H,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,+EAA+E;QACxF,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,yEAAyE;QAClF,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACnC;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,6FAA6F;QACtG,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,iFAAiF;QAC1F,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB;CACgE,CAAC,CAAC;AAKrE,MAAM,UAAU,0BAA0B,CACxC,MAAc;IAEd,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAAc;IAEd,IAAI,CAAC,KAAK;QAAE,OAAO,6BAA6B,CAAC;IACjD,IACE,CAAC,8BAA8B,CAAC,QAAQ,CACtC,KAAmC,CACpC,EACD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC9E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,8 @@ export type { H2AObligationCadence, H2ARecurringObligationAuditResult, H2ARecurr
15
15
  export { H2A_JURISDICTION_CONFLICT_DISPOSITIONS, H2A_JURISDICTION_KINDS, H2A_JURISDICTION_PROFILES, auditJurisdictionProfile, getJurisdictionProfile } from "./jurisdiction.js";
16
16
  export type { H2AJurisdictionAuditResult, H2AJurisdictionConflictDisposition, H2AJurisdictionKind, H2AJurisdictionProfileDescriptor } from "./jurisdiction.js";
17
17
  export { createEnvelope, isH2AEnvelope } from "./envelope.js";
18
+ export { H2A_SESSION_DEFAULT_EXPIRY_MS, H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS, H2A_SESSION_NOTIFICATION_TOPICS, H2A_SESSION_STATES, isH2ASession, isSessionExpired, pickFreshSessions } from "./session.js";
19
+ export type { H2ASession, H2ASessionExpiryOptions, H2ASessionInterests, H2ASessionNotificationTopic, H2ASessionState } from "./session.js";
18
20
  export { assertValidNegotiationState } from "./negotiation.js";
19
21
  export { canonicalize, computeHash } from "./canonical.js";
20
22
  export { signCanonical, verifyCanonical } from "./signature.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ export { H2A_RECOURSE_CONFLICT_DISPOSITIONS, H2A_RECOURSE_PROFILES, H2A_RECOURSE
7
7
  export { H2A_OBLIGATION_CADENCES, H2A_RECURRING_OBLIGATION_CONFLICT_DISPOSITIONS, H2A_RECURRING_OBLIGATION_PROFILES, auditRecurringObligationProfile, getRecurringObligationProfile } from "./recurring-obligations.js";
8
8
  export { H2A_JURISDICTION_CONFLICT_DISPOSITIONS, H2A_JURISDICTION_KINDS, H2A_JURISDICTION_PROFILES, auditJurisdictionProfile, getJurisdictionProfile } from "./jurisdiction.js";
9
9
  export { createEnvelope, isH2AEnvelope } from "./envelope.js";
10
+ export { H2A_SESSION_DEFAULT_EXPIRY_MS, H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS, H2A_SESSION_NOTIFICATION_TOPICS, H2A_SESSION_STATES, isH2ASession, isSessionExpired, pickFreshSessions } from "./session.js";
10
11
  export { assertValidNegotiationState } from "./negotiation.js";
11
12
  export { canonicalize, computeHash } from "./canonical.js";
12
13
  export { signCanonical, verifyCanonical } from "./signature.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAWlB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EACL,2CAA2C,EAC3C,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,kCAAkC,EAClC,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,uBAAuB,EACvB,8CAA8C,EAC9C,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EACL,sCAAsC,EACtC,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,EAC7B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iCAAiC,EACjC,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAWlB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EACL,2CAA2C,EAC3C,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,kCAAkC,EAClC,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,uBAAuB,EACvB,8CAA8C,EAC9C,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EACL,sCAAsC,EACtC,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,6BAA6B,EAC7B,yCAAyC,EACzC,+BAA+B,EAC/B,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAQtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,EAC7B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iCAAiC,EACjC,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Session protocol vocabulary (DEC-050).
3
+ *
4
+ * A SESSION is the live attachment of an INSTANCE to the protocol over a
5
+ * given transport. The INSTANCE (`claude:session-42`) is identity; the
6
+ * SESSION is the heartbeat-bounded liveness of one process holding that
7
+ * identity. An instance MAY have several concurrent sessions; the heartbeat
8
+ * is what distinguishes a live attachment from a stale registration.
9
+ *
10
+ * V1 ships this as a declarative vocabulary + presence guard. The actual
11
+ * heartbeat producer, presence-file format on disk, and MCP notification
12
+ * dispatch are implemented in `@sentropic/h2a-cli` (DEC-051 / DEC-052).
13
+ */
14
+ export declare const H2A_SESSION_STATES: readonly ["opening", "live", "draining", "closed", "expired"];
15
+ export declare const H2A_SESSION_NOTIFICATION_TOPICS: readonly ["presence.peer_joined", "presence.peer_left", "inbox.envelope_arrived", "negotiation.event_appended"];
16
+ export declare const H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS = 5000;
17
+ export declare const H2A_SESSION_DEFAULT_EXPIRY_MS = 15000;
18
+ export type H2ASessionState = (typeof H2A_SESSION_STATES)[number];
19
+ export type H2ASessionNotificationTopic = (typeof H2A_SESSION_NOTIFICATION_TOPICS)[number];
20
+ export interface H2ASessionInterests {
21
+ /** Scopes the session wants to observe for presence and negotiation events. */
22
+ readonly scopes: readonly string[];
23
+ /** Specific negotiation ids the session wants to follow. */
24
+ readonly negotiations: readonly string[];
25
+ }
26
+ export interface H2ASession {
27
+ readonly sessionId: string;
28
+ readonly instance: string;
29
+ /** Optional host CLI hint (e.g. "claude", "codex", "gemini"). */
30
+ readonly host?: string;
31
+ /** Optional PID of the process holding the session (for same-machine staleness checks). */
32
+ readonly pid?: number;
33
+ /** ISO timestamp when the session was opened. */
34
+ readonly startedAt: string;
35
+ /** ISO timestamp of the last heartbeat. Drives expiry. */
36
+ readonly heartbeatAt: string;
37
+ readonly state: H2ASessionState;
38
+ readonly interests: H2ASessionInterests;
39
+ readonly subscribedTopics: readonly H2ASessionNotificationTopic[];
40
+ }
41
+ export declare function isH2ASession(value: unknown): value is H2ASession;
42
+ export interface H2ASessionExpiryOptions {
43
+ /** Reference instant; defaults to Date.now(). */
44
+ readonly now?: number;
45
+ /** Expiry window in ms; defaults to H2A_SESSION_DEFAULT_EXPIRY_MS. */
46
+ readonly expiryMs?: number;
47
+ }
48
+ /**
49
+ * A session is expired iff its state is already `expired` or `closed`, or if
50
+ * its last heartbeat is older than `expiryMs` from `now`. The `opening` and
51
+ * `draining` states stay fresh as long as the heartbeat is recent — they
52
+ * describe lifecycle, not absence.
53
+ */
54
+ export declare function isSessionExpired(session: H2ASession, options?: H2ASessionExpiryOptions): boolean;
55
+ /**
56
+ * Filter a list of sessions to those whose heartbeat is still within
57
+ * `expiryMs` of `now` and whose state is not `closed`/`expired`. Pure helper,
58
+ * no I/O.
59
+ */
60
+ export declare function pickFreshSessions(sessions: readonly H2ASession[], options?: H2ASessionExpiryOptions): H2ASession[];
61
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,kBAAkB,+DAMrB,CAAC;AAEX,eAAO,MAAM,+BAA+B,iHAKlC,CAAC;AAEX,eAAO,MAAM,yCAAyC,OAAO,CAAC;AAC9D,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACnE;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CA+BhE;AAED,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAOD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAOT;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,OAAO,GAAE,uBAA4B,GACpC,UAAU,EAAE,CAEd"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Session protocol vocabulary (DEC-050).
3
+ *
4
+ * A SESSION is the live attachment of an INSTANCE to the protocol over a
5
+ * given transport. The INSTANCE (`claude:session-42`) is identity; the
6
+ * SESSION is the heartbeat-bounded liveness of one process holding that
7
+ * identity. An instance MAY have several concurrent sessions; the heartbeat
8
+ * is what distinguishes a live attachment from a stale registration.
9
+ *
10
+ * V1 ships this as a declarative vocabulary + presence guard. The actual
11
+ * heartbeat producer, presence-file format on disk, and MCP notification
12
+ * dispatch are implemented in `@sentropic/h2a-cli` (DEC-051 / DEC-052).
13
+ */
14
+ export const H2A_SESSION_STATES = [
15
+ "opening",
16
+ "live",
17
+ "draining",
18
+ "closed",
19
+ "expired"
20
+ ];
21
+ export const H2A_SESSION_NOTIFICATION_TOPICS = [
22
+ "presence.peer_joined",
23
+ "presence.peer_left",
24
+ "inbox.envelope_arrived",
25
+ "negotiation.event_appended"
26
+ ];
27
+ export const H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS = 5000;
28
+ export const H2A_SESSION_DEFAULT_EXPIRY_MS = 15000;
29
+ function isStringArray(value) {
30
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string");
31
+ }
32
+ function isInterests(value) {
33
+ if (!value || typeof value !== "object")
34
+ return false;
35
+ const v = value;
36
+ return isStringArray(v.scopes) && isStringArray(v.negotiations);
37
+ }
38
+ export function isH2ASession(value) {
39
+ if (!value || typeof value !== "object")
40
+ return false;
41
+ const v = value;
42
+ if (typeof v.sessionId !== "string" || v.sessionId.length === 0)
43
+ return false;
44
+ if (typeof v.instance !== "string" || v.instance.length === 0)
45
+ return false;
46
+ if (typeof v.startedAt !== "string")
47
+ return false;
48
+ if (typeof v.heartbeatAt !== "string")
49
+ return false;
50
+ if (typeof v.state !== "string" ||
51
+ !H2A_SESSION_STATES.includes(v.state)) {
52
+ return false;
53
+ }
54
+ if (!isInterests(v.interests))
55
+ return false;
56
+ if (!Array.isArray(v.subscribedTopics) ||
57
+ !v.subscribedTopics.every((topic) => typeof topic === "string" &&
58
+ H2A_SESSION_NOTIFICATION_TOPICS.includes(topic))) {
59
+ return false;
60
+ }
61
+ if (v.host !== undefined && typeof v.host !== "string")
62
+ return false;
63
+ if (v.pid !== undefined && (typeof v.pid !== "number" || !Number.isInteger(v.pid))) {
64
+ return false;
65
+ }
66
+ return true;
67
+ }
68
+ function parseHeartbeat(session) {
69
+ const parsed = Date.parse(session.heartbeatAt);
70
+ return Number.isNaN(parsed) ? 0 : parsed;
71
+ }
72
+ /**
73
+ * A session is expired iff its state is already `expired` or `closed`, or if
74
+ * its last heartbeat is older than `expiryMs` from `now`. The `opening` and
75
+ * `draining` states stay fresh as long as the heartbeat is recent — they
76
+ * describe lifecycle, not absence.
77
+ */
78
+ export function isSessionExpired(session, options = {}) {
79
+ if (session.state === "closed" || session.state === "expired")
80
+ return true;
81
+ const now = options.now ?? Date.now();
82
+ const expiryMs = options.expiryMs ?? H2A_SESSION_DEFAULT_EXPIRY_MS;
83
+ const beat = parseHeartbeat(session);
84
+ if (beat === 0)
85
+ return true;
86
+ return now - beat > expiryMs;
87
+ }
88
+ /**
89
+ * Filter a list of sessions to those whose heartbeat is still within
90
+ * `expiryMs` of `now` and whose state is not `closed`/`expired`. Pure helper,
91
+ * no I/O.
92
+ */
93
+ export function pickFreshSessions(sessions, options = {}) {
94
+ return sessions.filter((session) => !isSessionExpired(session, options));
95
+ }
96
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/h2a",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "Core contracts and runtime primitives for human-to-agent coordination.",
5
5
  "license": "MIT",
6
6
  "type": "module",