@danypops/papyrus 0.42.0 → 0.42.2

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 (73) hide show
  1. package/package.json +2 -2
  2. package/src/adapters/sqlite-artifact-scope-store.ts +18 -9
  3. package/src/adapters/sqlite-artifact-store.ts +7 -5
  4. package/src/adapters/sqlite-discussion-round-store.ts +26 -17
  5. package/src/adapters/sqlite-gate-runner.ts +1 -1
  6. package/src/adapters/sqlite-graph-projection-store.ts +14 -10
  7. package/src/adapters/sqlite-log-store.ts +36 -17
  8. package/src/adapters/sqlite-note-event-store.ts +20 -16
  9. package/src/adapters/sqlite-session-identity-store.ts +13 -7
  10. package/src/adapters/sqlite-task-event-store.ts +29 -21
  11. package/src/adapters/sqlite-task-focus-store.ts +36 -10
  12. package/src/adapters/sqlite-task-lease-store.ts +12 -6
  13. package/src/adapters/sqlite-task-scope-store.ts +25 -14
  14. package/src/artifact-relationship-view.ts +3 -3
  15. package/src/artifact-subtree.ts +4 -2
  16. package/src/authority-registry.ts +2 -1
  17. package/src/cli.ts +785 -179
  18. package/src/client.ts +46 -20
  19. package/src/constants.ts +15 -4
  20. package/src/daemon-state.ts +4 -12
  21. package/src/daemon.ts +31 -9
  22. package/src/db.ts +119 -98
  23. package/src/discussion-service.ts +109 -44
  24. package/src/domain/artifact-event.ts +17 -4
  25. package/src/domain/artifact.ts +3 -1
  26. package/src/domain/blueprint-definition.ts +26 -31
  27. package/src/domain/checklist.ts +20 -17
  28. package/src/domain/discussion.ts +37 -18
  29. package/src/domain/gate.ts +7 -7
  30. package/src/domain/log-entry.ts +1 -1
  31. package/src/domain/note-event.ts +20 -7
  32. package/src/domain/task-event.ts +17 -7
  33. package/src/domain-services.ts +241 -110
  34. package/src/graph-projection-service.ts +34 -8
  35. package/src/id-migration.ts +17 -4
  36. package/src/index.ts +16 -11
  37. package/src/log-service.ts +6 -5
  38. package/src/log.ts +19 -0
  39. package/src/modules/discuss.ts +63 -28
  40. package/src/modules/docs.ts +74 -17
  41. package/src/modules/graph-projection.ts +20 -9
  42. package/src/modules/logs.ts +33 -21
  43. package/src/modules/notes.ts +66 -28
  44. package/src/modules/playbooks.ts +88 -29
  45. package/src/modules/rules.ts +57 -15
  46. package/src/modules/session-identity.ts +6 -2
  47. package/src/modules/tasks.ts +142 -67
  48. package/src/note-service.ts +11 -7
  49. package/src/ops.ts +131 -68
  50. package/src/playbook-definition.ts +56 -17
  51. package/src/playbook-execution.ts +13 -3
  52. package/src/ports/note-event-store.ts +6 -4
  53. package/src/ports/task-event-store.ts +9 -6
  54. package/src/ports/task-focus-store.ts +17 -4
  55. package/src/ports/task-lease-store.ts +9 -4
  56. package/src/ports/task-scope-store.ts +3 -1
  57. package/src/service.ts +143 -89
  58. package/src/session-identity-service.ts +10 -2
  59. package/src/task-context.ts +28 -16
  60. package/src/task-execution.ts +4 -12
  61. package/src/task-graph-view.ts +12 -12
  62. package/src/task-relationship-view.ts +1 -3
  63. package/src/task-service.ts +167 -72
  64. package/src/vehicle/artifact-trash-vehicle.ts +25 -13
  65. package/src/vehicle/artifact-vehicle-shared.ts +28 -7
  66. package/src/vehicle/docs-vehicle.ts +48 -16
  67. package/src/vehicle/notes-vehicle.ts +24 -6
  68. package/src/vehicle/papyrus-vehicle.ts +14 -3
  69. package/src/vehicle/playbooks-vehicle.ts +87 -18
  70. package/src/vehicle/rules-vehicle.ts +58 -21
  71. package/src/vehicle/tasks-vehicle.ts +366 -54
  72. package/src/version.ts +1 -1
  73. package/src/workflow-execution.ts +71 -52
@@ -12,9 +12,10 @@
12
12
  * OperationInput parsing helpers, matching the "module code does not import another
13
13
  * module's infrastructure" constraint.
14
14
  */
15
- import type { OperationDefinition } from "../module-registry.ts";
15
+
16
16
  import type { NoteEventDirection } from "../domain/note-event.ts";
17
- import { Notes, type NoteDisposition } from "../note-service.ts";
17
+ import type { OperationDefinition } from "../module-registry.ts";
18
+ import type { NoteDisposition, Notes } from "../note-service.ts";
18
19
 
19
20
  const MODULE_ID = "notes";
20
21
 
@@ -42,39 +43,76 @@ function optionalNumber(input: OperationInput, key: string): number | undefined
42
43
 
43
44
  /** This module's own operation names, the single source of truth src/service.ts's EXPECTED_OPERATION_NAMES spreads in rather than re-listing by hand. */
44
45
  export const NOTES_OPERATION_NAMES = [
45
- "notes.capture", "notes.list", "notes.show", "notes.history", "notes.consume", "notes.promote", "notes.archive",
46
+ "notes.capture",
47
+ "notes.list",
48
+ "notes.show",
49
+ "notes.history",
50
+ "notes.consume",
51
+ "notes.promote",
52
+ "notes.archive",
46
53
  ] as const;
47
54
 
48
55
  /** Registers every notes.* operation against one Notes instance. Behavior is unchanged from the prior inline handlers in src/service.ts. */
49
56
  export function notesOperations(notes: Notes): OperationDefinition[] {
50
57
  const define = <Input, Output>(name: string, execute: (input: Input) => Output): OperationDefinition<Input, Output> => ({
51
- name, moduleId: MODULE_ID, execute,
58
+ name,
59
+ moduleId: MODULE_ID,
60
+ execute,
52
61
  });
53
62
  return [
54
- define("notes.capture", (input: OperationInput) => notes.capture({
55
- body: string(input, "body"), title: optionalString(input, "title"), projectRoot: string(input, "project_root"),
56
- actor: optionalString(input, "actor"), source: optionalString(input, "source"), sessionId: optionalString(input, "session_id"),
57
- })),
58
- define("notes.list", (input: OperationInput) => notes.list({
59
- projectRoot: string(input, "project_root"), status: optionalString(input, "status") as "draft" | "active" | "archived" | undefined,
60
- text: optionalString(input, "text"), limit: optionalNumber(input, "limit"),
61
- })),
63
+ define("notes.capture", (input: OperationInput) =>
64
+ notes.capture({
65
+ body: string(input, "body"),
66
+ title: optionalString(input, "title"),
67
+ projectRoot: string(input, "project_root"),
68
+ actor: optionalString(input, "actor"),
69
+ source: optionalString(input, "source"),
70
+ sessionId: optionalString(input, "session_id"),
71
+ }),
72
+ ),
73
+ define("notes.list", (input: OperationInput) =>
74
+ notes.list({
75
+ projectRoot: string(input, "project_root"),
76
+ status: optionalString(input, "status") as "draft" | "active" | "archived" | undefined,
77
+ text: optionalString(input, "text"),
78
+ limit: optionalNumber(input, "limit"),
79
+ }),
80
+ ),
62
81
  define("notes.show", (input: OperationInput) => notes.show(string(input, "id"), string(input, "project_root"))),
63
- define("notes.history", (input: OperationInput) => notes.history(string(input, "id"), string(input, "project_root"), {
64
- limit: optionalNumber(input, "limit"), cursor: optionalNumber(input, "cursor"), direction: optionalString(input, "direction") as NoteEventDirection | undefined,
65
- })),
66
- define("notes.consume", (input: OperationInput) => notes.consume(string(input, "id"), {
67
- projectRoot: string(input, "project_root"), actor: optionalString(input, "actor"), source: optionalString(input, "source"),
68
- sessionId: optionalString(input, "session_id"), reason: optionalString(input, "reason"),
69
- })),
70
- define("notes.promote", (input: OperationInput) => notes.promote(string(input, "id"), string(input, "target_id"), {
71
- projectRoot: string(input, "project_root"), actor: optionalString(input, "actor"), source: optionalString(input, "source"),
72
- sessionId: optionalString(input, "session_id"), reason: optionalString(input, "reason"),
73
- })),
74
- define("notes.archive", (input: OperationInput) => notes.archive(string(input, "id"), {
75
- projectRoot: string(input, "project_root"), disposition: string(input, "disposition") as NoteDisposition,
76
- actor: optionalString(input, "actor"), source: optionalString(input, "source"), sessionId: optionalString(input, "session_id"),
77
- reason: optionalString(input, "reason"),
78
- })),
82
+ define("notes.history", (input: OperationInput) =>
83
+ notes.history(string(input, "id"), string(input, "project_root"), {
84
+ limit: optionalNumber(input, "limit"),
85
+ cursor: optionalNumber(input, "cursor"),
86
+ direction: optionalString(input, "direction") as NoteEventDirection | undefined,
87
+ }),
88
+ ),
89
+ define("notes.consume", (input: OperationInput) =>
90
+ notes.consume(string(input, "id"), {
91
+ projectRoot: string(input, "project_root"),
92
+ actor: optionalString(input, "actor"),
93
+ source: optionalString(input, "source"),
94
+ sessionId: optionalString(input, "session_id"),
95
+ reason: optionalString(input, "reason"),
96
+ }),
97
+ ),
98
+ define("notes.promote", (input: OperationInput) =>
99
+ notes.promote(string(input, "id"), string(input, "target_id"), {
100
+ projectRoot: string(input, "project_root"),
101
+ actor: optionalString(input, "actor"),
102
+ source: optionalString(input, "source"),
103
+ sessionId: optionalString(input, "session_id"),
104
+ reason: optionalString(input, "reason"),
105
+ }),
106
+ ),
107
+ define("notes.archive", (input: OperationInput) =>
108
+ notes.archive(string(input, "id"), {
109
+ projectRoot: string(input, "project_root"),
110
+ disposition: string(input, "disposition") as NoteDisposition,
111
+ actor: optionalString(input, "actor"),
112
+ source: optionalString(input, "source"),
113
+ sessionId: optionalString(input, "session_id"),
114
+ reason: optionalString(input, "reason"),
115
+ }),
116
+ ),
79
117
  ];
80
118
  }
@@ -23,11 +23,11 @@ import {
23
23
  updatePlaybook,
24
24
  } from "../domain-services.ts";
25
25
  import type { OperationDefinition } from "../module-registry.ts";
26
+ import { invokePlaybook } from "../playbook-execution.ts";
26
27
  import type { ArtifactScopeStore } from "../ports/artifact-scope-store.ts";
27
28
  import type { ArtifactStore } from "../ports/artifact-store.ts";
28
29
  import type { TaskEventStore } from "../ports/task-event-store.ts";
29
30
  import type { TaskScopeStore } from "../ports/task-scope-store.ts";
30
- import { invokePlaybook } from "../playbook-execution.ts";
31
31
  import type { SessionIdentity } from "../session-identity-service.ts";
32
32
  import type { Tasks } from "../task-service.ts";
33
33
 
@@ -75,8 +75,19 @@ const artifactFilter = (input: OperationInput) => ({
75
75
 
76
76
  /** This module's own operation names, the single source of truth src/service.ts's EXPECTED_OPERATION_NAMES spreads in rather than re-listing by hand. */
77
77
  export const PLAYBOOKS_OPERATION_NAMES = [
78
- "playbooks.create", "playbooks.list", "playbooks.show", "playbooks.invoke", "playbooks.preview", "playbooks.enable", "playbooks.disable", "playbooks.assign_project", "playbooks.update",
79
- "playbooks.contain", "playbooks.uncontain", "playbooks.depend", "playbooks.undepend",
78
+ "playbooks.create",
79
+ "playbooks.list",
80
+ "playbooks.show",
81
+ "playbooks.invoke",
82
+ "playbooks.preview",
83
+ "playbooks.enable",
84
+ "playbooks.disable",
85
+ "playbooks.assign_project",
86
+ "playbooks.update",
87
+ "playbooks.contain",
88
+ "playbooks.uncontain",
89
+ "playbooks.depend",
90
+ "playbooks.undepend",
80
91
  ] as const;
81
92
 
82
93
  export interface PlaybooksModuleDeps {
@@ -91,43 +102,91 @@ export interface PlaybooksModuleDeps {
91
102
  sessionIdentity: SessionIdentity;
92
103
  }
93
104
 
94
- export function playbooksOperations({ artifacts, events, scopes, artifactScopes, tasks, sessionIdentity }: PlaybooksModuleDeps): OperationDefinition[] {
105
+ export function playbooksOperations({
106
+ artifacts,
107
+ events,
108
+ scopes,
109
+ artifactScopes,
110
+ tasks,
111
+ sessionIdentity,
112
+ }: PlaybooksModuleDeps): OperationDefinition[] {
95
113
  const define = <Input, Output>(name: string, execute: (input: Input) => Output): OperationDefinition<Input, Output> => ({
96
- name, moduleId: MODULE_ID, execute,
114
+ name,
115
+ moduleId: MODULE_ID,
116
+ execute,
97
117
  });
98
118
  return [
99
- define("playbooks.create", (input: OperationInput) => createPlaybook(artifacts, artifactScopes, {
100
- title: string(input, "title"), body: optionalString(input, "body"), trigger: optionalString(input, "trigger"),
101
- steps: input["steps"], tools: input["tools"] as string[] | undefined,
102
- arguments: input["arguments"],
103
- labels: input["labels"] as string[] | undefined, extra: input["extra"] as Record<string, unknown> | undefined,
104
- projectRoot: optionalString(input, "project_root"),
105
- }, eventContext(input))),
119
+ define("playbooks.create", (input: OperationInput) =>
120
+ createPlaybook(
121
+ artifacts,
122
+ artifactScopes,
123
+ {
124
+ title: string(input, "title"),
125
+ body: optionalString(input, "body"),
126
+ trigger: optionalString(input, "trigger"),
127
+ steps: input.steps,
128
+ tools: input.tools as string[] | undefined,
129
+ arguments: input.arguments,
130
+ labels: input.labels as string[] | undefined,
131
+ extra: input.extra as Record<string, unknown> | undefined,
132
+ projectRoot: optionalString(input, "project_root"),
133
+ },
134
+ eventContext(input),
135
+ ),
136
+ ),
106
137
  define("playbooks.list", (input: OperationInput) => listPlaybooks(artifacts, artifactScopes, artifactFilter(input))),
107
138
  define("playbooks.show", (input: OperationInput) => showPlaybook(artifacts, string(input, "id"))),
108
- define("playbooks.preview", (input: OperationInput) => playbookInvocation(artifacts, string(input, "id"), input["arguments"] as Record<string, unknown> | undefined)),
139
+ define("playbooks.preview", (input: OperationInput) =>
140
+ playbookInvocation(artifacts, string(input, "id"), input.arguments as Record<string, unknown> | undefined),
141
+ ),
109
142
  define("playbooks.invoke", (input: OperationInput) => {
110
- const result = invokePlaybook(artifacts, string(input, "id"), {
111
- runId: optionalString(input, "run_id") ?? optionalString(input, "runId"),
112
- arguments: input["arguments"] as Record<string, unknown> | undefined,
113
- }, { events, scopes, projectRoot: optionalString(input, "project_root"), context: eventContextFor(input, "playbook-run") });
143
+ const result = invokePlaybook(
144
+ artifacts,
145
+ string(input, "id"),
146
+ {
147
+ runId: optionalString(input, "run_id") ?? optionalString(input, "runId"),
148
+ arguments: input.arguments as Record<string, unknown> | undefined,
149
+ },
150
+ { events, scopes, projectRoot: optionalString(input, "project_root"), context: eventContextFor(input, "playbook-run") },
151
+ );
114
152
  if ("missingArguments" in result) return result;
115
153
  const focusContext = eventContextFor(input, "playbook-run");
116
154
  sessionIdentity.assertAuthorized(focusContext.sessionId, optionalString(input, "session_secret"));
117
155
  tasks.focus(result.entryTaskId, focusContext);
118
156
  return result;
119
157
  }),
120
- define("playbooks.enable", (input: OperationInput) => transitionPlaybook(artifacts, string(input, "id"), "enable", eventContext(input))),
121
- define("playbooks.disable", (input: OperationInput) => transitionPlaybook(artifacts, string(input, "id"), "disable", eventContext(input))),
122
- define("playbooks.assign_project", (input: OperationInput) => assignPlaybookProject(artifacts, artifactScopes, string(input, "id"), optionalString(input, "project_root"))),
123
- define("playbooks.update", (input: OperationInput) => updatePlaybook(artifacts, string(input, "id"), {
124
- title: optionalString(input, "title"), body: optionalString(input, "body"), labels: input["labels"] as string[] | undefined,
125
- }, eventContext(input))),
126
- define("playbooks.contain", (input: OperationInput) => containPlaybook(artifacts, string(input, "parent_id"), string(input, "child_id"), eventContext(input))),
127
- define("playbooks.uncontain", (input: OperationInput) => uncontainPlaybook(artifacts, string(input, "parent_id"), string(input, "child_id"), eventContext(input))),
128
- define("playbooks.depend", (input: OperationInput) => dependPlaybook(artifacts, string(input, "id"), string(input, "dependency_id"), eventContext(input))),
129
- define("playbooks.undepend", (input: OperationInput) => undependPlaybook(artifacts, string(input, "id"), string(input, "dependency_id"), eventContext(input))),
158
+ define("playbooks.enable", (input: OperationInput) =>
159
+ transitionPlaybook(artifacts, string(input, "id"), "enable", eventContext(input)),
160
+ ),
161
+ define("playbooks.disable", (input: OperationInput) =>
162
+ transitionPlaybook(artifacts, string(input, "id"), "disable", eventContext(input)),
163
+ ),
164
+ define("playbooks.assign_project", (input: OperationInput) =>
165
+ assignPlaybookProject(artifacts, artifactScopes, string(input, "id"), optionalString(input, "project_root")),
166
+ ),
167
+ define("playbooks.update", (input: OperationInput) =>
168
+ updatePlaybook(
169
+ artifacts,
170
+ string(input, "id"),
171
+ {
172
+ title: optionalString(input, "title"),
173
+ body: optionalString(input, "body"),
174
+ labels: input.labels as string[] | undefined,
175
+ },
176
+ eventContext(input),
177
+ ),
178
+ ),
179
+ define("playbooks.contain", (input: OperationInput) =>
180
+ containPlaybook(artifacts, string(input, "parent_id"), string(input, "child_id"), eventContext(input)),
181
+ ),
182
+ define("playbooks.uncontain", (input: OperationInput) =>
183
+ uncontainPlaybook(artifacts, string(input, "parent_id"), string(input, "child_id"), eventContext(input)),
184
+ ),
185
+ define("playbooks.depend", (input: OperationInput) =>
186
+ dependPlaybook(artifacts, string(input, "id"), string(input, "dependency_id"), eventContext(input)),
187
+ ),
188
+ define("playbooks.undepend", (input: OperationInput) =>
189
+ undependPlaybook(artifacts, string(input, "id"), string(input, "dependency_id"), eventContext(input)),
190
+ ),
130
191
  ];
131
192
  }
132
-
133
-
@@ -10,7 +10,16 @@
10
10
  * into this module or introducing a premature "modules call each other through the
11
11
  * registry" convention.
12
12
  */
13
- import { assignRuleProject, createRule, gateTaskWithRule, listRules, previewRule, showRule, transitionRule, updateRule } from "../domain-services.ts";
13
+ import {
14
+ assignRuleProject,
15
+ createRule,
16
+ gateTaskWithRule,
17
+ listRules,
18
+ previewRule,
19
+ showRule,
20
+ transitionRule,
21
+ updateRule,
22
+ } from "../domain-services.ts";
14
23
  import type { OperationDefinition } from "../module-registry.ts";
15
24
  import type { ArtifactScopeStore } from "../ports/artifact-scope-store.ts";
16
25
  import type { ArtifactStore } from "../ports/artifact-store.ts";
@@ -55,30 +64,63 @@ const artifactFilter = (input: OperationInput) => ({
55
64
  /** Registers every rules.* operation except rules.injectable (see module comment). Behavior is unchanged from the prior inline handlers in src/service.ts. */
56
65
  /** This module's own operation names, the single source of truth src/service.ts's EXPECTED_OPERATION_NAMES spreads in rather than re-listing by hand. rules.injectable is deliberately absent -- see the module comment above. */
57
66
  export const RULES_OPERATION_NAMES = [
58
- "rules.create", "rules.list", "rules.show", "rules.preview", "rules.enable", "rules.disable", "rules.gate", "rules.assign_project", "rules.update",
67
+ "rules.create",
68
+ "rules.list",
69
+ "rules.show",
70
+ "rules.preview",
71
+ "rules.enable",
72
+ "rules.disable",
73
+ "rules.gate",
74
+ "rules.assign_project",
75
+ "rules.update",
59
76
  ] as const;
60
77
 
61
78
  export function rulesOperations(artifacts: ArtifactStore, scopes: ArtifactScopeStore): OperationDefinition[] {
62
79
  const define = <Input, Output>(name: string, execute: (input: Input) => Output): OperationDefinition<Input, Output> => ({
63
- name, moduleId: MODULE_ID, execute,
80
+ name,
81
+ moduleId: MODULE_ID,
82
+ execute,
64
83
  });
65
84
  return [
66
- define("rules.create", (input: OperationInput) => createRule(artifacts, scopes, {
67
- title: string(input, "title"), body: optionalString(input, "body"), condition: optionalString(input, "condition"),
68
- action: optionalString(input, "rule_action") ?? optionalString(input, "governance_action"),
69
- severity: optionalString(input, "severity") as "block" | "warn" | "info" | undefined,
70
- labels: input["labels"] as string[] | undefined, extra: input["extra"] as Record<string, unknown> | undefined,
71
- projectRoot: optionalString(input, "project_root"),
72
- }, eventContext(input))),
85
+ define("rules.create", (input: OperationInput) =>
86
+ createRule(
87
+ artifacts,
88
+ scopes,
89
+ {
90
+ title: string(input, "title"),
91
+ body: optionalString(input, "body"),
92
+ condition: optionalString(input, "condition"),
93
+ action: optionalString(input, "rule_action") ?? optionalString(input, "governance_action"),
94
+ severity: optionalString(input, "severity") as "block" | "warn" | "info" | undefined,
95
+ labels: input.labels as string[] | undefined,
96
+ extra: input.extra as Record<string, unknown> | undefined,
97
+ projectRoot: optionalString(input, "project_root"),
98
+ },
99
+ eventContext(input),
100
+ ),
101
+ ),
73
102
  define("rules.list", (input: OperationInput) => listRules(artifacts, scopes, artifactFilter(input))),
74
103
  define("rules.show", (input: OperationInput) => showRule(artifacts, string(input, "id"))),
75
104
  define("rules.preview", (input: OperationInput) => previewRule(artifacts, string(input, "id"))),
76
105
  define("rules.enable", (input: OperationInput) => transitionRule(artifacts, string(input, "id"), "enable", eventContext(input))),
77
106
  define("rules.disable", (input: OperationInput) => transitionRule(artifacts, string(input, "id"), "disable", eventContext(input))),
78
- define("rules.gate", (input: OperationInput) => gateTaskWithRule(artifacts, string(input, "id"), string(input, "task_id"), eventContext(input))),
79
- define("rules.assign_project", (input: OperationInput) => assignRuleProject(artifacts, scopes, string(input, "id"), optionalString(input, "project_root"))),
80
- define("rules.update", (input: OperationInput) => updateRule(artifacts, string(input, "id"), {
81
- title: optionalString(input, "title"), body: optionalString(input, "body"), labels: input["labels"] as string[] | undefined,
82
- }, eventContext(input))),
107
+ define("rules.gate", (input: OperationInput) =>
108
+ gateTaskWithRule(artifacts, string(input, "id"), string(input, "task_id"), eventContext(input)),
109
+ ),
110
+ define("rules.assign_project", (input: OperationInput) =>
111
+ assignRuleProject(artifacts, scopes, string(input, "id"), optionalString(input, "project_root")),
112
+ ),
113
+ define("rules.update", (input: OperationInput) =>
114
+ updateRule(
115
+ artifacts,
116
+ string(input, "id"),
117
+ {
118
+ title: optionalString(input, "title"),
119
+ body: optionalString(input, "body"),
120
+ labels: input.labels as string[] | undefined,
121
+ },
122
+ eventContext(input),
123
+ ),
124
+ ),
83
125
  ];
84
126
  }
@@ -29,10 +29,14 @@ export const SESSION_IDENTITY_OPERATION_NAMES = ["session.register", "session.re
29
29
  /** Registers every session.* operation against one SessionIdentity instance. */
30
30
  export function sessionIdentityOperations(sessionIdentity: SessionIdentity): OperationDefinition[] {
31
31
  const define = <Input, Output>(name: string, execute: (input: Input) => Output): OperationDefinition<Input, Output> => ({
32
- name, moduleId: MODULE_ID, execute,
32
+ name,
33
+ moduleId: MODULE_ID,
34
+ execute,
33
35
  });
34
36
  return [
35
37
  define("session.register", (input: OperationInput) => sessionIdentity.register(string(input, "session_id"))),
36
- define("session.release", (input: OperationInput) => sessionIdentity.release(string(input, "session_id"), optionalString(input, "session_secret"))),
38
+ define("session.release", (input: OperationInput) =>
39
+ sessionIdentity.release(string(input, "session_id"), optionalString(input, "session_secret")),
40
+ ),
37
41
  ];
38
42
  }