@codetreker/daynight 0.25.2 → 0.26.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 (181) hide show
  1. package/README.md +116 -8
  2. package/config.example.yml +3 -0
  3. package/dist/api/client.js +2 -2
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/parse.js +14 -2
  6. package/dist/api/parse.js.map +1 -1
  7. package/dist/api/types.d.ts +4 -1
  8. package/dist/api/worker-mode.d.ts +6 -0
  9. package/dist/api/worker-mode.js +14 -0
  10. package/dist/api/worker-mode.js.map +1 -0
  11. package/dist/cli/commands.js +2 -0
  12. package/dist/cli/commands.js.map +1 -1
  13. package/dist/commands/controller/command-controls.d.ts +4 -0
  14. package/dist/commands/controller/command-controls.js +33 -0
  15. package/dist/commands/controller/command-controls.js.map +1 -0
  16. package/dist/commands/controller/definition.d.ts +3 -0
  17. package/dist/commands/controller/definition.js +22 -0
  18. package/dist/commands/controller/definition.js.map +1 -0
  19. package/dist/commands/controller/independent.d.ts +3 -0
  20. package/dist/commands/controller/independent.js +344 -0
  21. package/dist/commands/controller/independent.js.map +1 -0
  22. package/dist/commands/controller/index.d.ts +12 -0
  23. package/dist/commands/controller/index.js +73 -0
  24. package/dist/commands/controller/index.js.map +1 -0
  25. package/dist/commands/controller/launch-ticket.d.ts +49 -0
  26. package/dist/commands/controller/launch-ticket.js +99 -0
  27. package/dist/commands/controller/launch-ticket.js.map +1 -0
  28. package/dist/commands/controller/lifecycle-store.d.ts +84 -0
  29. package/dist/commands/controller/lifecycle-store.js +278 -0
  30. package/dist/commands/controller/lifecycle-store.js.map +1 -0
  31. package/dist/commands/controller/local-client.d.ts +44 -0
  32. package/dist/commands/controller/local-client.js +75 -0
  33. package/dist/commands/controller/local-client.js.map +1 -0
  34. package/dist/commands/controller/local-content.d.ts +23 -0
  35. package/dist/commands/controller/local-content.js +103 -0
  36. package/dist/commands/controller/local-content.js.map +1 -0
  37. package/dist/commands/controller/process-proof.d.ts +13 -0
  38. package/dist/commands/controller/process-proof.js +121 -0
  39. package/dist/commands/controller/process-proof.js.map +1 -0
  40. package/dist/commands/controller/providers/claude.d.ts +2 -0
  41. package/dist/commands/controller/providers/claude.js +470 -0
  42. package/dist/commands/controller/providers/claude.js.map +1 -0
  43. package/dist/commands/controller/providers/codex.d.ts +2 -0
  44. package/dist/commands/controller/providers/codex.js +254 -0
  45. package/dist/commands/controller/providers/codex.js.map +1 -0
  46. package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
  47. package/dist/commands/controller/providers/controls-claude.js +138 -0
  48. package/dist/commands/controller/providers/controls-claude.js.map +1 -0
  49. package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
  50. package/dist/commands/controller/providers/controls-codex.js +199 -0
  51. package/dist/commands/controller/providers/controls-codex.js.map +1 -0
  52. package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
  53. package/dist/commands/controller/providers/controls-copilot.js +143 -0
  54. package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
  55. package/dist/commands/controller/providers/controls.d.ts +21 -0
  56. package/dist/commands/controller/providers/controls.js +53 -0
  57. package/dist/commands/controller/providers/controls.js.map +1 -0
  58. package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
  59. package/dist/commands/controller/providers/copilot-interactions.js +295 -0
  60. package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
  61. package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
  62. package/dist/commands/controller/providers/copilot-projection.js +93 -0
  63. package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
  64. package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
  65. package/dist/commands/controller/providers/copilot-runtime.js +127 -0
  66. package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
  67. package/dist/commands/controller/providers/copilot.d.ts +2 -0
  68. package/dist/commands/controller/providers/copilot.js +309 -0
  69. package/dist/commands/controller/providers/copilot.js.map +1 -0
  70. package/dist/commands/controller/providers/interactions.d.ts +3 -0
  71. package/dist/commands/controller/providers/interactions.js +79 -0
  72. package/dist/commands/controller/providers/interactions.js.map +1 -0
  73. package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
  74. package/dist/commands/controller/providers/native-rpc.js +85 -0
  75. package/dist/commands/controller/providers/native-rpc.js.map +1 -0
  76. package/dist/commands/controller/providers/projection.d.ts +23 -0
  77. package/dist/commands/controller/providers/projection.js +99 -0
  78. package/dist/commands/controller/providers/projection.js.map +1 -0
  79. package/dist/commands/controller/providers/turns.d.ts +7 -0
  80. package/dist/commands/controller/providers/turns.js +21 -0
  81. package/dist/commands/controller/providers/turns.js.map +1 -0
  82. package/dist/commands/controller/providers/types.d.ts +44 -0
  83. package/dist/commands/controller/providers/types.js +2 -0
  84. package/dist/commands/controller/providers/types.js.map +1 -0
  85. package/dist/commands/controller/recovery.d.ts +6 -0
  86. package/dist/commands/controller/recovery.js +22 -0
  87. package/dist/commands/controller/recovery.js.map +1 -0
  88. package/dist/commands/controller/relay.d.ts +18 -0
  89. package/dist/commands/controller/relay.js +299 -0
  90. package/dist/commands/controller/relay.js.map +1 -0
  91. package/dist/commands/controller/resume.d.ts +18 -0
  92. package/dist/commands/controller/resume.js +193 -0
  93. package/dist/commands/controller/resume.js.map +1 -0
  94. package/dist/commands/controller/runtime.d.ts +5 -0
  95. package/dist/commands/controller/runtime.js +455 -0
  96. package/dist/commands/controller/runtime.js.map +1 -0
  97. package/dist/commands/controller/windows-job.d.ts +3 -0
  98. package/dist/commands/controller/windows-job.js +59 -0
  99. package/dist/commands/controller/windows-job.js.map +1 -0
  100. package/dist/commands/controller/wire-display.d.ts +5 -0
  101. package/dist/commands/controller/wire-display.js +11 -0
  102. package/dist/commands/controller/wire-display.js.map +1 -0
  103. package/dist/commands/skill/skills/using-daynight/SKILL.md +24 -20
  104. package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +16 -10
  105. package/dist/commands/skill/skills/using-daynight/references/create-task.md +40 -39
  106. package/dist/commands/skill/skills/using-daynight/references/goal.md +40 -29
  107. package/dist/commands/skill/skills/using-daynight/references/handbook.md +4 -3
  108. package/dist/commands/skill/skills/using-daynight/references/handoff.md +3 -0
  109. package/dist/commands/skill/skills/using-daynight/references/run-task.md +3 -3
  110. package/dist/commands/skill/skills/using-daynight/references/task-content.md +96 -51
  111. package/dist/commands/skill/skills/using-daynight/references/task-execution.md +28 -22
  112. package/dist/commands/worker/backend.d.ts +7 -0
  113. package/dist/commands/worker/backend.js +7 -0
  114. package/dist/commands/worker/backend.js.map +1 -0
  115. package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
  116. package/dist/commands/worker/backends/grant-renewal.js +42 -0
  117. package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
  118. package/dist/commands/worker/backends/session-api.d.ts +66 -0
  119. package/dist/commands/worker/backends/session-api.js +84 -0
  120. package/dist/commands/worker/backends/session-api.js.map +1 -0
  121. package/dist/commands/worker/backends/web-process.d.ts +79 -0
  122. package/dist/commands/worker/backends/web-process.js +156 -0
  123. package/dist/commands/worker/backends/web-process.js.map +1 -0
  124. package/dist/commands/worker/backends/web-store.d.ts +49 -0
  125. package/dist/commands/worker/backends/web-store.js +323 -0
  126. package/dist/commands/worker/backends/web-store.js.map +1 -0
  127. package/dist/commands/worker/backends/web-types.d.ts +83 -0
  128. package/dist/commands/worker/backends/web-types.js +3 -0
  129. package/dist/commands/worker/backends/web-types.js.map +1 -0
  130. package/dist/commands/worker/backends/web.d.ts +26 -0
  131. package/dist/commands/worker/backends/web.js +178 -0
  132. package/dist/commands/worker/backends/web.js.map +1 -0
  133. package/dist/commands/worker/config.js +12 -5
  134. package/dist/commands/worker/config.js.map +1 -1
  135. package/dist/commands/worker/control.d.ts +2 -0
  136. package/dist/commands/worker/control.js +11 -4
  137. package/dist/commands/worker/control.js.map +1 -1
  138. package/dist/commands/worker/coordinator.d.ts +7 -0
  139. package/dist/commands/worker/coordinator.js +138 -19
  140. package/dist/commands/worker/coordinator.js.map +1 -1
  141. package/dist/commands/worker/herdr/agents.js +11 -8
  142. package/dist/commands/worker/herdr/agents.js.map +1 -1
  143. package/dist/commands/worker/herdr/arguments.js +10 -5
  144. package/dist/commands/worker/herdr/arguments.js.map +1 -1
  145. package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
  146. package/dist/commands/worker/herdr/claude-input.js +20 -0
  147. package/dist/commands/worker/herdr/claude-input.js.map +1 -0
  148. package/dist/commands/worker/herdr/instance.js +1 -1
  149. package/dist/commands/worker/herdr/instance.js.map +1 -1
  150. package/dist/commands/worker/herdr/preflight.d.ts +1 -1
  151. package/dist/commands/worker/herdr/preflight.js +31 -10
  152. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  153. package/dist/commands/worker/herdr.js +5 -1
  154. package/dist/commands/worker/herdr.js.map +1 -1
  155. package/dist/commands/worker/prompts.js +5 -1
  156. package/dist/commands/worker/prompts.js.map +1 -1
  157. package/dist/commands/worker/repositories.js +2 -2
  158. package/dist/commands/worker/repositories.js.map +1 -1
  159. package/dist/commands/worker/runtime.js +62 -10
  160. package/dist/commands/worker/runtime.js.map +1 -1
  161. package/dist/commands/worker/setup-environment.d.ts +2 -1
  162. package/dist/commands/worker/setup-environment.js +10 -4
  163. package/dist/commands/worker/setup-environment.js.map +1 -1
  164. package/dist/commands/worker/setup.js +5 -5
  165. package/dist/commands/worker/setup.js.map +1 -1
  166. package/dist/commands/worker/store.d.ts +2 -1
  167. package/dist/commands/worker/store.js +19 -9
  168. package/dist/commands/worker/store.js.map +1 -1
  169. package/dist/commands/worker/types.d.ts +4 -1
  170. package/dist/commands/worker/worktrees.js +9 -6
  171. package/dist/commands/worker/worktrees.js.map +1 -1
  172. package/dist/session/controller-protocol.d.ts +245 -0
  173. package/dist/session/controller-protocol.js +218 -0
  174. package/dist/session/controller-protocol.js.map +1 -0
  175. package/dist/session/controls.d.ts +28 -0
  176. package/dist/session/controls.js +37 -0
  177. package/dist/session/controls.js.map +1 -0
  178. package/dist/session/protocol.d.ts +290 -0
  179. package/dist/session/protocol.js +307 -0
  180. package/dist/session/protocol.js.map +1 -0
  181. package/package.json +7 -2
@@ -1,52 +1,88 @@
1
1
  # Task content standard
2
2
 
3
3
  Read this reference when creating, breaking down, handing off, or executing a
4
- task. An isolated executor does not inherit the originating chat, memory,
5
- private worktree, temporary files, or session-only authorization. The description
6
- and its readable references must together explain the current task completely.
7
- Use the target repository's document and language rules.
4
+ task. The description and its readable references must explain the task without
5
+ the originating chat, memory, private worktree, or temporary files. Use the
6
+ target repository's document and language rules.
7
+
8
+ ## Task and session boundary
9
+
10
+ Tasks describe what must be achieved and delivered. Sessions hold how the task
11
+ is executed or discussed. Keep task definitions, required inputs, deliverables,
12
+ acceptance criteria, and resulting artifacts in task content. Keep execution and
13
+ discussion plans, steps, tool choices, collaboration, operational authorization,
14
+ progress, blockers, and recovery context in the session. Apply this boundary to
15
+ descriptions, attachments, and referenced task material.
16
+
17
+ A design supplied as a required input or produced as the task's deliverable is
18
+ task content; the session's plan for producing that deliverable is session
19
+ context. Classify information by its purpose, not its filename or words such as
20
+ "plan", "method", or "steps". A requested migration design, test strategy, or
21
+ runbook can be a task deliverable. Do not invent such a deliverable to upload a
22
+ session checkpoint or execution log.
23
+
24
+ | Information | Location |
25
+ |---|---|
26
+ | Required sorting behavior; an upstream API contract; a design task's current architecture | Task definition, input, or result |
27
+ | "Register only; do not execute or enable agents in this session"; chosen commands, agent assignments, review rounds | Session context; current operations still obey its restrictions |
28
+ | Required deliverable platform or compatibility threshold; a human-confirmation completion condition | Task scope or acceptance criteria |
29
+ | Authorization to push or merge; CI/review progress, waiting items, claim/worktree/head and next action | Session context or the corresponding platform |
30
+ | A final deliverable's immutable revision; an acceptance conclusion and the key observations needed to support it | Task result, without the execution history |
8
31
 
9
- Distinguish task requirements from session-only constraints, and record only
10
- task-specific information in the task.
32
+ Operational authorization does not become task content because another session
33
+ might need it. Preserve it in the host's session state or existing local
34
+ checkpoint. Missing authorization or assignment cannot be reconstructed from a
35
+ task's description, attachments, acceptance state, or status.
11
36
 
12
- ## Six content requirements
37
+ ## Task definition and results
13
38
 
14
- These are content requirements, not six mandatory headings. Provide each item
15
- in the description, in clearly referenced documents, or through a mixture of
16
- both. Complete inline content needs no primary attachment; do not duplicate
17
- complete documents or keep empty template sections.
39
+ Provide the following substantive information in the description, clearly
40
+ referenced documents, or a mixture of both. These are not mandatory headings.
41
+ Complete inline content needs no primary attachment; do not duplicate complete
42
+ documents or keep empty template sections.
18
43
 
19
- | Content | Required information |
44
+ | Definition | Required information |
20
45
  |---|---|
21
46
  | Objective and requirements | The concrete problem, intended outcome, and required behavior. Use requirement IDs when they help acceptance. |
22
- | Scope and deliverables | This task's responsibility, outputs, constraints, and boundaries. Identify its applicable parts of shared documents. |
23
- | Solution and design | The approach, decisions, and architecture constraints needed for this stage, or their actual source. A design-producing task states its inputs, questions, outputs, and confirmation gate. |
24
- | Input and output contracts | Actual producers or consumers, delivery and reading locations, exchanged structure and semantics, availability, and verification. Explicitly say when there is no task-to-task exchange. |
25
- | Acceptance criteria and verification | Observable completion conditions, methods, applicable success/failure/boundary cases, and the location of evidence. Requirement and acceptance IDs may establish correspondence. |
26
- | Sources | Accurate source identities, applicable sections, and purpose for required content and supporting material. One source can cover several items. |
47
+ | Scope and constraints | This task's responsibility and delivery boundaries, including constraints on the product or deliverable and applicable parts of shared documents. |
48
+ | Inputs and sources | Actual required requirements, designs, prototypes, protocols, or deliveries, with accurate source identities, applicable sections, and purpose. |
49
+ | Deliverables and contracts | Expected outputs, delivery and reading locations, and the structure and semantics needed by actual producers or consumers. Explicitly say when there is no task-to-task exchange. |
50
+ | Acceptance criteria | Observable completion conditions, applicable success/failure/boundary behavior, required thresholds, and any human-confirmation gate. |
51
+
52
+ Save results as they are produced: current reviewable requirements or designs,
53
+ actual deliverables, acceptance conclusions, defects, and material limitations.
54
+ An immutable revision or verified resource location may identify a result.
55
+ Keep the accepted content and its effective state, not successive discussion or
56
+ confirmation records. Acceptance results may include the assessed source and
57
+ key observations needed to understand the conclusion; commands, debugging
58
+ history, CI logs, and review handling remain execution context.
59
+
60
+ A task does not universally require a separate solution, implementation plan,
61
+ verification procedure, confirmation record, or evidence location. Its starting
62
+ content depends on the stage and actual inputs. Do not require unfinished
63
+ results or prefilled result sections at registration.
27
64
 
28
65
  The description must identify the concrete current work and responsibility and
29
66
  make its content sources discoverable. Judge completeness from the description
30
67
  and the contents actually read, not heading presence or whether the description
31
68
  repeats the documents. A bare generic problem plus unexplained links, "see the
32
- previous discussion", unreadable resources, and missing decisions are insufficient.
69
+ previous discussion", unreadable resources, and missing required decisions are
70
+ insufficient. Absence of a session execution plan is not a task-content gap.
33
71
 
34
- ## Content ownership and evidence
72
+ ## Content ownership
35
73
 
36
74
  Each detailed explanation has one owner: the description, a referenced task
37
75
  attachment, or its actual shared source. Keep shared requirements, architecture,
38
- and protocols at their owning task. Record this task's user confirmations,
39
- acceptance conclusions, and delivery evidence in an explicitly identified
40
- location in its own description or attachments; do not leave them only in chat
41
- or mix them into shared design. Rewrite the owning material coherently when its
42
- facts change rather than accumulating an execution log.
43
-
44
- For example, a description may identify an upload retry task, reference its own
45
- `plan.md` for requirements R1–R3 and acceptance AC1–AC4, identify the architecture
46
- task and `design/upload.md` sections for shared interfaces, and place this task's
47
- acceptance evidence in `plan.md`. Those identities and paths must be real and
48
- verified. A simple maintenance task can instead state the approach, contract,
49
- acceptance, and evidence location inline.
76
+ and protocols at their owning task. Save this task's results at their actual
77
+ owner and make them discoverable from its description. Rewrite the owning
78
+ material coherently when its facts change; do not accumulate an execution log.
79
+
80
+ For example, an upload retry task may define its required behavior and
81
+ acceptance inline and reference the architecture task's `design/upload.md` for
82
+ shared interfaces. A design task may own that architecture in its description
83
+ or an actual attachment. Neither needs an attachment containing the session's
84
+ implementation steps. Those source identities and paths must be real and
85
+ verified.
50
86
 
51
87
  ## Resolve and read sources
52
88
 
@@ -58,13 +94,13 @@ owning task ID and content location: its description and applicable sections for
58
94
  inline content, or the complete attachment path for an actual attachment. Name
59
95
  the whole description when all of it applies; sections only delimit a larger
60
96
  source and do not require invented headings. Read source task descriptions with
61
- `task show --json`; list and read attachment
62
- contents separately with the installed attachment commands. Repository documents
63
- need accurate paths and the required verified immutable source revision. State
64
- the sections, requirements, or interfaces applicable to this task when a source
65
- covers more. Do not invent an attachment path for inline content, relocate or
66
- copy it merely to satisfy a reference format, or invent a URL scheme, cross-task
67
- relative link, or fixed service host.
97
+ `task show --json`; list and read attachment contents separately with the
98
+ installed attachment commands. Repository documents need accurate paths and the
99
+ required verified immutable source revision. State the sections, requirements,
100
+ or interfaces applicable to this task when a source covers more. Do not invent
101
+ an attachment path for inline content, relocate or copy it merely to satisfy a
102
+ reference format, or invent a URL scheme, cross-task relative link, or fixed
103
+ service host.
68
104
 
69
105
  Read the required source contents, including further references needed for the
70
106
  current stage. Track already-read resource identities to avoid circular reading.
@@ -102,19 +138,22 @@ Necessary direct prerequisites remain in the complete `dependsOn` set and its
102
138
  [the handbook's dependency reduction rule](handbook.md#dependency-reduction).
103
139
  Contract source identities do not form a second complete dependency list, and a
104
140
  source reference does not create an execution dependency. Use
105
- [the handbook](handbook.md) for relationship semantics.
141
+ [the handbook](handbook.md) for relationship semantics. Existing status, PR,
142
+ permission, platform, and worker fields keep their own service semantics; do not
143
+ copy them into prose as a second operational record.
106
144
 
107
145
  ## Apply the current stage
108
146
 
109
- | Stage | Sufficient starting content | Stage outputs |
147
+ | Stage | Sufficient starting content | Stage results |
110
148
  |---|---|---|
111
- | Requirements discussion | Known problem, outcome, scope, open questions, and user-confirmation method | Complete requirements, applicable prototype, and user confirmation |
112
- | Solution or architecture discussion | Confirmed requirements, applicable prototype, design questions, and confirmation method | Design and candidate breakdown; actual registration after confirmation |
113
- | Implementation or document delivery | Defined requirements and scope, delivered design and applicable prototype, contracts, and acceptance | The scoped deliverable and its delivery evidence |
114
- | Independent final acceptance | Whole agreed requirements and confirmed changes, actual deliveries and evidence sources | Requirement-based conclusions, defects, and unverified items |
149
+ | Requirements discussion | Known problem, outcome, scope, constraints, open requirements questions, and completion conditions | Current and confirmed requirements and applicable prototype |
150
+ | Solution or architecture discussion | Confirmed requirements, applicable prototype, design questions, intended deliverables, and completion conditions | Current architecture, key decisions, and delivery breakdown |
151
+ | Implementation or document delivery | Defined requirements and scope, required design and applicable prototype, contracts, deliverables, and acceptance criteria | The scoped deliverable and its actual location or version |
152
+ | Independent final acceptance | Whole agreed requirements and confirmed changes, actual deliveries, and acceptance criteria | Requirement-based conclusions, defects, and unverified items |
115
153
 
116
154
  A stage's unfinished outputs are not prerequisites for starting that stage.
117
- Preserve human confirmation as an actual completion condition where required.
155
+ Preserve human confirmation as an actual completion condition where required;
156
+ the execution protocol handles the confirmation action and advancement.
118
157
  Explicit prerequisite-produced implementation outputs may still be pending when
119
158
  preparing a blocked task, provided the necessary design and agreed interfaces
120
159
  already define the successor's work. Do not label future output as an existing
@@ -122,12 +161,18 @@ readable input. Execution still waits for real prerequisites and required inputs
122
161
 
123
162
  ## Check sufficiency
124
163
 
125
- Before reporting creation, breakdown, or handoff ready, check all six items,
126
- source readability and applicability, task-specific evidence ownership, and the
127
- stage's additional conditions. Unknown requirements, design choices, acceptance
128
- thresholds, and interface decisions are concrete blockers, not details to invent.
129
- Only organize confirmed information within existing authorization. A material
130
- scope or behavior change requires user confirmation.
164
+ Before reporting creation, breakdown, or handoff ready, check the task
165
+ definition, source readability and applicability, existing result ownership, and
166
+ the stage's additional conditions. Check both directions: session context stays
167
+ out, and actual requirements, required design inputs, and task results remain
168
+ complete. Unknown requirements, design choices, acceptance thresholds, and
169
+ interface decisions are concrete blockers, not details to invent. Only organize
170
+ confirmed information within existing authorization. A material scope or
171
+ behavior change requires user confirmation.
172
+
173
+ Apply the boundary when reading existing material and when authoring or
174
+ rewriting authorized task content. It does not authorize bulk edits of historical
175
+ tasks or automatic changes to fields, permissions, or recorded history.
131
176
 
132
177
  Task versions protect task metadata, not independently mutable attachments or
133
178
  cross-task references. Verify mutable contents before enabling permission and
@@ -1,19 +1,20 @@
1
1
  # Shared task execution
2
2
 
3
3
  Read this reference after the selected execution mode establishes the task's
4
- identity. It owns required inputs, authorized work, delivery, evidence, and
4
+ identity. It owns required inputs, authorized work, delivery, results, and
5
5
  acceptance readiness. The execution mode owns starting or resuming the task,
6
6
  its final status operation, and returning to its caller.
7
7
 
8
8
  ## Read the task and stage inputs
9
9
 
10
10
  Read the complete task and its actual required references under
11
- [the task content standard](task-content.md), including the solution, acceptance
12
- criteria, and explicit task-owned confirmation/evidence location. Its Markdown
13
- description must identify the concrete current work, responsibility, and content
14
- sources. Complete inline content needs no primary attachment; document-owned
15
- and mixed organization are valid when their combined contents satisfy the same
16
- six requirements.
11
+ [the task content standard](task-content.md), including the task definition,
12
+ actual required design inputs, acceptance criteria, and existing results. Its
13
+ Markdown description must identify the concrete current work, responsibility,
14
+ and content sources. Complete inline content needs no primary attachment;
15
+ document-owned and mixed organization are valid when their combined contents
16
+ provide the stage-appropriate task definition. A missing session execution plan
17
+ is not a missing task input.
17
18
 
18
19
  Resolve description-relative links and images from the current task's attachment
19
20
  root; links inside a Markdown attachment use its own directory. Resolve real
@@ -65,8 +66,9 @@ apply the shared rule to verification methods, temporary helpers, and result
65
66
  ownership.
66
67
 
67
68
  Follow the target repository's instructions for worktrees, implementation,
68
- review, validation, and delivery. Use the task's stage-appropriate solution and
69
+ review, validation, and delivery. Use the task's required design inputs and
69
70
  acceptance criteria, including applicable final-style prototype interactions.
71
+ Keep the implementation or discussion plan in the session.
70
72
  Requirements discussion defines the problem without architecture decisions or
71
73
  production implementation. Solution discussion keeps its draft architecture and
72
74
  breakdown in its owning task. Preserve the Goal's user-confirmation gates:
@@ -78,24 +80,27 @@ Resolve material changes to the agreed solution or acceptance within the current
78
80
  authorization. Rewrite the owning artifact and affected task summaries and input
79
81
  references coherently. Preserve requirements; do not silently weaken acceptance.
80
82
  Descriptions remain self-contained Markdown task summaries. Preserve valid
81
- syntax, original content, and actual resource references during full-field
82
- updates; confirm new or replaced resources before linking them. Dependency edits
83
+ syntax, required task content, and actual resource references during full-field
84
+ updates; confirm new or replaced resources before linking them. Apply the content
85
+ boundary to authorized rewrites without modifying unrelated historical tasks.
86
+ Dependency edits
83
87
  must follow the handbook's CLI replacement contract: read full D/E, retain needed
84
88
  ordinary D−E and external E declarations, submit their intended complete sets
85
89
  with the observed version, and read back both. Omit all dependency options for
86
- unrelated metadata updates. Keep detailed content at its identified owner and
87
- confirmations and evidence at their explicit task-owned location; shared inputs
88
- remain at their verified source.
90
+ unrelated metadata updates. Keep detailed task content and produced results at
91
+ their identified owners; shared inputs remain at their verified source.
89
92
 
90
93
  Advance only this task. Subagents collaborate on it, and waiting for CI, review,
91
94
  approval, or merge remains part of it. Keep all required delivery PR URLs and
92
95
  titles in the complete `properties.pullRequests` list, preserving existing
93
- entries. Record acceptance results and necessary delivery evidence, including
94
- merge commits, at this task's identified evidence location against the
95
- corresponding acceptance criteria. Rewrite current evidence coherently rather
96
- than accumulating an execution log. Keep operational progress, blockers, waiting
97
- items, and next action in the conversation or existing execution checkpoint,
98
- retaining the task ID and needed PR and workspace references.
96
+ entries. Save actual task results and acceptance conclusions at their owners.
97
+ Use verified artifact locations or immutable revisions when needed to identify
98
+ the final deliverable. Rewrite current results coherently rather than
99
+ accumulating an execution log. Keep operational authorization, implementation
100
+ steps, CI/review/merge handling, progress, blockers, waiting items, and next
101
+ action in the conversation or existing execution checkpoint, retaining the task
102
+ ID and needed PR and workspace references. Recover authorization and assignment
103
+ from that session context, not task material or status.
99
104
 
100
105
  ## Confirm acceptance readiness
101
106
 
@@ -122,9 +127,10 @@ completion pending and successors blocked.
122
127
 
123
128
  For tasks without a development or PR delivery path, use their stated stage
124
129
  acceptance. For [final acceptance](../SKILL.md#final-acceptance), also apply the
125
- shared whole-task or whole-Goal completion rule. In every case, confirm required
126
- evidence is recorded and readable before returning to the execution mode's
127
- completion operation. Discussion completion establishes that stage's accepted
130
+ shared whole-task or whole-Goal completion rule. In every case, confirm the
131
+ required deliverables and acceptance conclusions are readable before returning
132
+ to the execution mode's completion operation; retain operational verification
133
+ in the session. Discussion completion establishes that stage's accepted
128
134
  output; it does not establish whole-Goal completion.
129
135
 
130
136
  ## Preserve waiting context
@@ -0,0 +1,7 @@
1
+ import type { AgentControlMode, WorkerAgent } from "../../api/types.js";
2
+ /** Validate effective arguments before a claim can create native execution responsibility. */
3
+ export declare const requireImplementedWorkerBackend: (configuration: {
4
+ agent: WorkerAgent;
5
+ agentControlMode?: AgentControlMode;
6
+ args?: readonly string[];
7
+ } | null) => void;
@@ -0,0 +1,7 @@
1
+ import { parseProviderArguments } from "../controller/providers/projection.js";
2
+ /** Validate effective arguments before a claim can create native execution responsibility. */
3
+ export const requireImplementedWorkerBackend = (configuration) => {
4
+ if (configuration?.agentControlMode === "web" && configuration.args !== undefined)
5
+ parseProviderArguments(configuration.agent, configuration.args);
6
+ };
7
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../src/commands/worker/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,8FAA8F;AAC9F,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,aAA2G,EAAQ,EAAE;IACnK,IAAI,aAAa,EAAE,gBAAgB,KAAK,KAAK,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS;QAAE,sBAAsB,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AACrJ,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { readLaunchTicket } from "../../controller/launch-ticket.js";
2
+ import type { WebExecutionStore } from "./web-store.js";
3
+ import type { createWebControllerLauncher } from "./web-process.js";
4
+ /** Keep native channels authorized independently of claim-discovery polling. */
5
+ export declare const maintainWorkerControllerGrants: (options: {
6
+ homeDirectory: string;
7
+ serverOrigin: string;
8
+ store: Pick<WebExecutionStore, "listUnfinishedTasks">;
9
+ launcher: Pick<ReturnType<typeof createWebControllerLauncher>, "refreshGrant">;
10
+ signal: AbortSignal;
11
+ onError(message: string): void;
12
+ readTicket?: typeof readLaunchTicket;
13
+ }) => Promise<void>;
@@ -0,0 +1,42 @@
1
+ import { setTimeout as delay } from "node:timers/promises";
2
+ import { readLaunchTicket } from "../../controller/launch-ticket.js";
3
+ /** Keep native channels authorized independently of claim-discovery polling. */
4
+ export const maintainWorkerControllerGrants = async (options) => {
5
+ const readTicket = options.readTicket ?? readLaunchTicket;
6
+ const failures = new Map();
7
+ while (!options.signal.aborted) {
8
+ const renewals = await Promise.allSettled(options.store.listUnfinishedTasks().map(async (task) => {
9
+ if (options.signal.aborted)
10
+ return;
11
+ const execution = task.webExecution;
12
+ if (task.serverOrigin !== options.serverOrigin || !execution?.ticketPath || execution.launchSubmission === "not-submitted" || task.cleanup?.agentStopped)
13
+ return;
14
+ try {
15
+ const ticket = await readTicket(options.homeDirectory, execution.launchId);
16
+ if (ticket.executionId !== execution.executionId || ticket.executionGeneration !== execution.executionGeneration || ticket.controllerInstanceId !== execution.controllerInstanceId || ticket.claimId !== task.claimId)
17
+ throw new Error("Controller credential renewal has conflicting execution evidence.");
18
+ await options.launcher.refreshGrant(task, ticket, options.signal);
19
+ failures.delete(execution.executionId);
20
+ }
21
+ catch (error) {
22
+ if (options.signal.aborted)
23
+ return;
24
+ const message = error instanceof Error ? error.message : "Controller credential renewal failed.";
25
+ if (failures.get(execution.executionId) !== message)
26
+ options.onError(message);
27
+ failures.set(execution.executionId, message);
28
+ }
29
+ }));
30
+ const rejected = renewals.filter(result => result.status === "rejected");
31
+ if (rejected.length > 0)
32
+ throw new AggregateError(rejected.map(result => result.reason), "Controller credential renewal could not finish safely.");
33
+ try {
34
+ await delay(30_000, undefined, { signal: options.signal });
35
+ }
36
+ catch (error) {
37
+ if (!options.signal.aborted)
38
+ throw error;
39
+ }
40
+ }
41
+ };
42
+ //# sourceMappingURL=grant-renewal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant-renewal.js","sourceRoot":"","sources":["../../../../src/commands/worker/backends/grant-renewal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,gFAAgF;AAChF,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EAAE,OAKpD,EAAiB,EAAE;IAClB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAC7F,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,SAAS,CAAC,gBAAgB,KAAK,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY;gBAAE,OAAO;YACjK,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC3E,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,CAAC,mBAAmB,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,CAAC,oBAAoB,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBAC5S,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO;gBACnC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC;gBACjG,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,OAAO;oBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9E,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,wDAAwD,CAAC,CAAC;QACnJ,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QACnE,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { SESSION_PROTOCOL } from "../../../session/protocol.js";
2
+ import { type ControllerGrantResponse } from "../../../session/controller-protocol.js";
3
+ import type { LocalTask, WebExecutionState } from "./web-types.js";
4
+ export declare const createWorkerSessionApi: (serverOrigin: string, serverToken: string) => {
5
+ verifyUnregistered: (identity: {
6
+ projectId: string;
7
+ taskId: string;
8
+ claimId: string;
9
+ }, signal: AbortSignal) => Promise<void>;
10
+ verifySupport: (provider: string, signal: AbortSignal) => Promise<void>;
11
+ register: (task: LocalTask, execution: WebExecutionState, signal: AbortSignal) => Promise<{
12
+ readonly claimId: string;
13
+ readonly testExecutionId?: never;
14
+ } & {
15
+ readonly sessionId: string;
16
+ readonly executionGeneration: import("../../../session/protocol.js").DecimalSequence;
17
+ } & {
18
+ readonly connectionEpoch: import("../../../session/protocol.js").DecimalSequence;
19
+ } & {
20
+ readonly controls?: import("../../../session/controls.js").SessionControls;
21
+ readonly turnStartedAt?: string | null;
22
+ readonly protocol: typeof SESSION_PROTOCOL;
23
+ readonly schemaVersion: typeof import("../../../session/protocol.js").SESSION_SCHEMA_VERSION;
24
+ readonly projectionVersion: typeof import("../../../session/protocol.js").SESSION_PROJECTION_VERSION;
25
+ readonly identity: ({
26
+ readonly projectId: string;
27
+ readonly taskId: string;
28
+ readonly workerId: string;
29
+ readonly worktreeId: string;
30
+ readonly ownerUserId?: never;
31
+ } | {
32
+ readonly ownerUserId: string;
33
+ readonly projectId?: never;
34
+ readonly taskId?: never;
35
+ readonly workerId?: never;
36
+ readonly worktreeId?: never;
37
+ }) & {
38
+ readonly controllerId: string;
39
+ readonly controllerInstanceId: string;
40
+ readonly agentControlMode: "web";
41
+ readonly provider: import("../../../session/protocol.js").SessionProvider;
42
+ readonly nativeSessionId: string | null;
43
+ };
44
+ readonly sessionRevision: import("../../../session/protocol.js").DecimalSequence;
45
+ readonly historyEpoch: string;
46
+ readonly lastEventSeq: import("../../../session/protocol.js").DecimalSequence;
47
+ readonly lastTimelineSeq: import("../../../session/protocol.js").DecimalSequence;
48
+ readonly initialInputState: import("../../../session/protocol.js").InitialInputState;
49
+ readonly synchronized: boolean;
50
+ readonly lifecycle: "active" | "draining" | "archived";
51
+ readonly connectionState: "connected" | "disconnected" | "synchronizing";
52
+ readonly activity: "initializing" | "idle" | "working" | "waiting_input" | "stopped" | "unknown";
53
+ readonly currentTurnId: string | null;
54
+ readonly capabilities: import("../../../session/protocol.js").SessionCapabilities;
55
+ readonly operations: import("../../../session/protocol.js").SessionOperations;
56
+ readonly cleanupInteractionIds?: readonly string[];
57
+ }>;
58
+ grant: (task: LocalTask, execution: WebExecutionState, signal: AbortSignal, previous?: {
59
+ generation: string;
60
+ instanceId: string;
61
+ recordId: string;
62
+ stoppedAt: string;
63
+ }) => Promise<ControllerGrantResponse>;
64
+ };
65
+ export declare const writeControllerCredential: (filename: string, grant: ControllerGrantResponse) => Promise<void>;
66
+ export type WorkerSessionApi = ReturnType<typeof createWorkerSessionApi>;
@@ -0,0 +1,84 @@
1
+ import { chmod, mkdir, rename, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { SESSION_PROTOCOL } from "../../../session/protocol.js";
5
+ import { parseRegistrationResponse, parseControllerGrantResponse, parseCurrentSessionResponse } from "../../../session/controller-protocol.js";
6
+ export const createWorkerSessionApi = (serverOrigin, serverToken) => {
7
+ const request = async (target, body, signal, method = "POST") => {
8
+ const response = await fetch(`${serverOrigin}${target}`, { method, headers: { authorization: `Bearer ${serverToken}`, "content-type": "application/json" }, ...(body === undefined ? {} : { body: JSON.stringify(body) }), signal: AbortSignal.any([signal, AbortSignal.timeout(30000)]) });
9
+ const chunks = [];
10
+ let size = 0;
11
+ if (response.body !== null) {
12
+ const reader = response.body.getReader();
13
+ try {
14
+ while (true) {
15
+ const { done, value } = await reader.read();
16
+ if (done)
17
+ break;
18
+ size += value.byteLength;
19
+ if (size > 2 * 1024 * 1024) {
20
+ await reader.cancel();
21
+ throw new Error("Session registration response exceeds its limit.");
22
+ }
23
+ chunks.push(value);
24
+ }
25
+ }
26
+ finally {
27
+ reader.releaseLock();
28
+ }
29
+ }
30
+ const raw = Buffer.concat(chunks).toString("utf8");
31
+ if (!response.ok)
32
+ throw new Error(`Session registration failed with HTTP ${response.status}; read back the original registration before replacing its identity.`);
33
+ try {
34
+ return JSON.parse(raw);
35
+ }
36
+ catch {
37
+ throw new Error("Session registration returned invalid JSON; the result is unconfirmed.");
38
+ }
39
+ };
40
+ const prefix = (task) => `/api/v1/projects/${task.projectId}/tasks/${task.taskId}/sessions`;
41
+ return {
42
+ verifyUnregistered: async (identity, signal) => {
43
+ const result = parseCurrentSessionResponse(await request(`/api/v1/projects/${identity.projectId}/tasks/${identity.taskId}/sessions/current`, undefined, signal, "GET"));
44
+ if (result.status !== "not_registered" || result.claimId !== identity.claimId)
45
+ throw new Error("The original Web launch provenance is missing; an existing or superseded Session cannot be recreated or deleted. Restore its execution evidence.");
46
+ },
47
+ verifySupport: async (provider, signal) => {
48
+ const response = await fetch(`${serverOrigin}/api/v1/session-capabilities`, { headers: { authorization: `Bearer ${serverToken}` }, signal: AbortSignal.any([signal, AbortSignal.timeout(10000)]) });
49
+ if (!response.ok)
50
+ throw new Error("This service has not confirmed Web session protocol support; no claim was submitted.");
51
+ const value = await response.json();
52
+ if (value.protocol !== SESSION_PROTOCOL || value.schemaVersion !== 1 || value.projectionVersion !== 1 || !Array.isArray(value.providers) || !value.providers.includes(provider))
53
+ throw new Error("The service Web session protocol or provider is incompatible; no claim was submitted.");
54
+ },
55
+ register: async (task, execution, signal) => {
56
+ if (task.configuration?.agentControlMode !== "web")
57
+ throw new Error("Session registration requires a supported web execution.");
58
+ const input = { protocol: SESSION_PROTOCOL, registrationId: execution.registrationId, claimId: task.claimId, workerId: task.workerId, worktreeId: task.worktreeId, provider: task.configuration.agent, controllerId: execution.controllerId, controllerInstanceId: execution.controllerInstanceId };
59
+ const result = parseRegistrationResponse(await request(prefix(task), input, signal));
60
+ const session = result.session;
61
+ if (session.claimId !== task.claimId || session.identity.taskId !== task.taskId || session.identity.projectId !== task.projectId || session.identity.workerId !== task.workerId || session.identity.worktreeId !== task.worktreeId || session.identity.provider !== task.configuration.agent || session.identity.controllerId !== execution.controllerId || session.identity.controllerInstanceId !== execution.controllerInstanceId)
62
+ throw new Error("Registered session does not match the frozen execution.");
63
+ return session;
64
+ },
65
+ grant: async (task, execution, signal, previous) => {
66
+ if (execution.sessionId === null)
67
+ throw new Error("Controller authorization requires its registered session.");
68
+ const input = { protocol: SESSION_PROTOCOL, claimId: task.claimId, controllerId: execution.controllerId, controllerInstanceId: execution.controllerInstanceId, executionGeneration: execution.executionGeneration, kind: execution.launchSubmission === "not-submitted" ? "bootstrap" : "reconnect", previousGeneration: previous?.generation ?? null, stopProof: previous === undefined ? null : { recordId: previous.recordId, previousControllerInstanceId: previous.instanceId, stoppedAt: previous.stoppedAt } };
69
+ const grant = parseControllerGrantResponse(await request(`${prefix(task)}/${execution.sessionId}/controller-grant`, input, signal));
70
+ if (grant.sessionId !== execution.sessionId || grant.claimId !== task.claimId || grant.executionGeneration !== execution.executionGeneration || grant.controllerId !== execution.controllerId || grant.controllerInstanceId !== execution.controllerInstanceId)
71
+ throw new Error("Controller grant does not match the frozen execution.");
72
+ return grant;
73
+ },
74
+ };
75
+ };
76
+ export const writeControllerCredential = async (filename, grant) => {
77
+ await mkdir(path.dirname(filename), { recursive: true, mode: 0o700 });
78
+ await chmod(path.dirname(filename), 0o700);
79
+ const temporary = `${filename}.${randomUUID()}.tmp`;
80
+ await writeFile(temporary, `${JSON.stringify(grant)}\n`, { flag: "wx", mode: 0o600 });
81
+ await rename(temporary, filename);
82
+ await chmod(filename, 0o600);
83
+ };
84
+ //# sourceMappingURL=session-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-api.js","sourceRoot":"","sources":["../../../../src/commands/worker/backends/session-api.ts"],"names":[],"mappings":"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"}