@knpkv/herdr-work 0.3.0 → 0.5.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 (67) hide show
  1. package/README.md +99 -1
  2. package/dist/agent-binding.d.ts +4 -0
  3. package/dist/agent-binding.d.ts.map +1 -0
  4. package/dist/agent-binding.js +26 -0
  5. package/dist/agent-binding.js.map +1 -0
  6. package/dist/errors.d.ts +141 -0
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +97 -0
  9. package/dist/errors.js.map +1 -1
  10. package/dist/goal-family.d.ts +4 -0
  11. package/dist/goal-family.d.ts.map +1 -0
  12. package/dist/goal-family.js +32 -0
  13. package/dist/goal-family.js.map +1 -0
  14. package/dist/index.d.ts +4 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/internal/agent-binding-admission.d.ts +15 -0
  19. package/dist/internal/agent-binding-admission.d.ts.map +1 -0
  20. package/dist/internal/agent-binding-admission.js +92 -0
  21. package/dist/internal/agent-binding-admission.js.map +1 -0
  22. package/dist/internal/agent-binding-readback.d.ts +55 -0
  23. package/dist/internal/agent-binding-readback.d.ts.map +1 -0
  24. package/dist/internal/agent-binding-readback.js +124 -0
  25. package/dist/internal/agent-binding-readback.js.map +1 -0
  26. package/dist/internal/coordinator-authority.d.ts +62 -0
  27. package/dist/internal/coordinator-authority.d.ts.map +1 -0
  28. package/dist/internal/coordinator-authority.js +214 -0
  29. package/dist/internal/coordinator-authority.js.map +1 -0
  30. package/dist/internal/decision-handoff-migration.d.ts +126 -0
  31. package/dist/internal/decision-handoff-migration.d.ts.map +1 -0
  32. package/dist/internal/decision-handoff-migration.js +51 -0
  33. package/dist/internal/decision-handoff-migration.js.map +1 -0
  34. package/dist/internal/history-validation.d.ts +5 -0
  35. package/dist/internal/history-validation.d.ts.map +1 -0
  36. package/dist/internal/history-validation.js +33 -0
  37. package/dist/internal/history-validation.js.map +1 -0
  38. package/dist/model.d.ts +3109 -51
  39. package/dist/model.d.ts.map +1 -1
  40. package/dist/model.js +340 -11
  41. package/dist/model.js.map +1 -1
  42. package/dist/navigation.d.ts +17 -0
  43. package/dist/navigation.d.ts.map +1 -0
  44. package/dist/navigation.js +62 -0
  45. package/dist/navigation.js.map +1 -0
  46. package/dist/projection.d.ts +660 -0
  47. package/dist/projection.d.ts.map +1 -1
  48. package/dist/projection.js +65 -25
  49. package/dist/projection.js.map +1 -1
  50. package/dist/service.d.ts +1886 -3
  51. package/dist/service.d.ts.map +1 -1
  52. package/dist/service.js +138 -5
  53. package/dist/service.js.map +1 -1
  54. package/dist/sql.d.ts +30 -0
  55. package/dist/sql.d.ts.map +1 -0
  56. package/dist/sql.js +1454 -0
  57. package/dist/sql.js.map +1 -0
  58. package/dist/store.d.ts +1072 -4
  59. package/dist/store.d.ts.map +1 -1
  60. package/dist/store.js +3328 -43
  61. package/dist/store.js.map +1 -1
  62. package/dist/view.d.ts +9 -2
  63. package/dist/view.d.ts.map +1 -1
  64. package/dist/view.js +156 -8
  65. package/dist/view.js.map +1 -1
  66. package/package.json +25 -13
  67. package/src/styles.css +91 -17
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAEL,kBAAkB,EAKnB,MAAM,YAAY,CAAA;AAkFnB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAiB/B,CAAA"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAEL,kBAAkB,EAMnB,MAAM,YAAY,CAAA;AAmHnB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAiB/B,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { Effect, Schema } from "effect";
2
2
  import { WorkProjectionError } from "./errors.js";
3
+ import { workHistoryError } from "./internal/history-validation.js";
3
4
  import { WorkGoalCheckpoint, workHistoryMaxEvents, WorkSnapshots } from "./model.js";
4
5
  const windowOffset = {
5
6
  now: 0,
@@ -7,35 +8,59 @@ const windowOffset = {
7
8
  week: 7 * 24 * 60 * 60 * 1_000,
8
9
  month: 30 * 24 * 60 * 60 * 1_000
9
10
  };
11
+ const compareString = (left, right) => {
12
+ let li = 0;
13
+ let ri = 0;
14
+ const leftLength = left.length;
15
+ const rightLength = right.length;
16
+ while (li < leftLength && ri < rightLength) {
17
+ const leftCode = left.codePointAt(li);
18
+ const rightCode = right.codePointAt(ri);
19
+ if (leftCode === undefined || rightCode === undefined)
20
+ break;
21
+ if (leftCode !== rightCode)
22
+ return leftCode < rightCode ? -1 : 1;
23
+ li += leftCode > 0xffff ? 2 : 1;
24
+ ri += rightCode > 0xffff ? 2 : 1;
25
+ }
26
+ if (li >= leftLength && ri >= rightLength)
27
+ return 0;
28
+ return li >= leftLength ? -1 : 1;
29
+ };
10
30
  const projectionError = (reason, detail, cause) => new WorkProjectionError({ cause, detail, reason });
11
31
  const validateHistory = Effect.fn("HerdrWork.validateHistory")(function* (input) {
12
32
  const events = yield* Schema.decodeUnknownEffect(Schema.Array(WorkGoalCheckpoint).check(Schema.isMaxLength(workHistoryMaxEvents)))(input).pipe(Effect.mapError((cause) => projectionError("malformed", "work checkpoint history is malformed", cause)));
13
- const eventIds = new Set();
14
- const goalTimes = new Set();
15
- const createdAt = new Map();
16
- for (const event of events) {
17
- if (eventIds.has(event.eventId)) {
18
- return yield* projectionError("duplicate_event", `work event ${event.eventId} occurs more than once`, event);
19
- }
20
- eventIds.add(event.eventId);
21
- const timeKey = `${event.goal.id}\u0000${event.occurredAt}`;
22
- if (goalTimes.has(timeKey)) {
23
- return yield* projectionError("ambiguous_checkpoint", `goal ${event.goal.id} has more than one checkpoint at ${event.occurredAt}`, event);
24
- }
25
- goalTimes.add(timeKey);
26
- const firstCreatedAt = createdAt.get(event.goal.id);
27
- if (firstCreatedAt !== undefined && firstCreatedAt !== event.goal.createdAt) {
28
- return yield* projectionError("inconsistent_history", `goal ${event.goal.id} changed its creation timestamp`, event);
29
- }
30
- createdAt.set(event.goal.id, event.goal.createdAt);
31
- }
32
- for (const [goalId, timestamp] of createdAt) {
33
- if (!events.some((event) => event.goal.id === goalId && event.occurredAt === timestamp)) {
34
- return yield* projectionError("inconsistent_history", `goal ${goalId} has no checkpoint at its creation timestamp`, { goalId, timestamp });
35
- }
36
- }
33
+ const historyError = workHistoryError(events);
34
+ if (historyError !== undefined)
35
+ return yield* historyError;
37
36
  return events;
38
37
  });
38
+ const familiesFor = (latest) => {
39
+ const canonicalById = new Map();
40
+ for (const goal of latest.values()) {
41
+ if (goal.goalFamily?.role === "canonical")
42
+ canonicalById.set(goal.id, goal);
43
+ }
44
+ const groups = [];
45
+ for (const canonical of canonicalById.values()) {
46
+ const superseded = [...latest.values()]
47
+ .filter((goal) => goal.goalFamily?.role === "superseded" &&
48
+ goal.goalFamily.canonicalGoalId === canonical.id)
49
+ .toSorted((left, right) => right.updatedAt - left.updatedAt ||
50
+ compareString(left.title, right.title) ||
51
+ compareString(left.id, right.id));
52
+ if (superseded.length === 0)
53
+ continue;
54
+ groups.push({
55
+ canonicalGoalId: canonical.id,
56
+ canonical,
57
+ superseded
58
+ });
59
+ }
60
+ return groups.toSorted((left, right) => right.canonical.updatedAt - left.canonical.updatedAt ||
61
+ compareString(left.canonical.title, right.canonical.title) ||
62
+ compareString(left.canonicalGoalId, right.canonicalGoalId));
63
+ };
39
64
  const snapshotAt = (events, observedAt, window) => {
40
65
  const asOf = Math.max(0, observedAt - windowOffset[window]);
41
66
  const latest = new Map();
@@ -43,11 +68,26 @@ const snapshotAt = (events, observedAt, window) => {
43
68
  if (event.occurredAt <= asOf)
44
69
  latest.set(event.goal.id, event.goal);
45
70
  }
71
+ const families = familiesFor(latest);
72
+ const goals = [...latest.values()]
73
+ .filter((goal) => goal.goalFamily?.role !== "superseded")
74
+ .toSorted((left, right) => right.updatedAt - left.updatedAt ||
75
+ compareString(left.title, right.title) ||
76
+ compareString(left.id, right.id));
77
+ if (families.length > 0) {
78
+ return {
79
+ window,
80
+ observedAt,
81
+ asOf,
82
+ goals,
83
+ families
84
+ };
85
+ }
46
86
  return {
47
87
  window,
48
88
  observedAt,
49
89
  asOf,
50
- goals: [...latest.values()].toSorted((left, right) => right.updatedAt - left.updatedAt || left.title.localeCompare(right.title))
90
+ goals
51
91
  };
52
92
  };
53
93
  export const projectWorkSnapshots = Effect.fn("HerdrWork.projectSnapshots")(function* (input, observedAt) {
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}