ticlawk 0.1.17-dev.12 → 0.1.17-dev.13

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ticlawk",
3
- "version": "0.1.17-dev.12",
3
+ "version": "0.1.17-dev.13",
4
4
  "description": "Local connector that links agent harnesses (Claude Code, Codex, OpenClaw, opencode, Pi) to the Ticlawk mobile app.",
5
5
  "type": "module",
6
6
  "main": "ticlawk.mjs",
@@ -8,9 +8,14 @@ The goal loop runs in the backend **goal lane**. Your chat-side job is to handle
8
8
 
9
9
  ## Handling a message
10
10
 
11
- - Answer the message, send the result, and stop.
12
- - If the message sets, clarifies, or changes the goal, also write it into the charter with `ticlawk charter set` (the per-turn goal block shows you the current charter and how to edit it). That hands the change to the goal lane. If the goal is unchanged, just answer.
13
- - Scope: in a DM you own the goal and the charter; in a group as admin/owner you also own the task board, membership, and the owner-facing surfaces.
11
+ The goal lane does the goal's actual work — it runs the loop and carries out the goal's tasks (experiments, builds, and the like). Your chat-side job is the charter, approvals, and talking to the owner; you do not carry out the goal's work yourself in a chat turn. Read the incoming message as one of:
12
+
13
+ - **Approving or rejecting** something ("go ahead", "approved", "no, hold off") — the goal lane is waiting on an approval. Resolve it (see Owner approvals); resolving resumes the lane and it does the work. Don't do the work yourself.
14
+ - **Setting, clarifying, or changing the goal** — write it into the charter with `ticlawk charter set` (the per-turn goal block shows the current charter and how to edit it). That re-aims the lane.
15
+ - **Telling you to start or continue the goal's work** ("get going", "run it") — that work belongs to the goal lane. Don't run experiments, builds, or its tasks here. Acknowledge, make sure the charter is right and any pending approval is resolved (`ticlawk approval list`), and let the lane carry it out.
16
+ - **A genuine one-off aside**, not part of pursuing the chartered goal — just answer it.
17
+
18
+ Scope: in a DM you own the goal and the charter; in a group as admin/owner you also own the task board, membership, and the owner-facing surfaces.
14
19
 
15
20
  ## Owner approvals
16
21
 
@@ -101,16 +101,23 @@ If this message sets a goal, write it into the charter — the goal and what "do
101
101
  `);
102
102
  }
103
103
 
104
- // The goal lane (transition deliveries) executes against the charter; its
105
- // per-step instructions come from the goal-step prompt, so here the charter
106
- // is just the goal/success spec. The chat lane keeps the charter correct;
107
- // writing it (charter set) is what re-aims the goal lane. This authorityLine
108
- // is the single home for the operative "edit the charter, write it whole"
109
- // instruction GOAL_AUTHORITY.md only describes the flow, not the mechanics.
104
+ // For the goal-authority chat lane, lead with what work on the goal is doing
105
+ // right now (from goal_lane_state, attached by the claim) in plain terms,
106
+ // not internal state names so the agent acts on fact: resolve a pending
107
+ // approval, don't redo work already running, and use charter set for a goal
108
+ // change. Transition deliveries (the goal loop's own steps) get the spec only.
109
+ const gl = msg.goal_lane_state && typeof msg.goal_lane_state === 'object' ? msg.goal_lane_state : null;
110
+ const stateLine = !gl
111
+ ? ''
112
+ : gl.pending_approval
113
+ ? `Work on this goal is paused, waiting for you to approve: "${gl.pending_approval.title}". A go-ahead from you here is that approval — resolve it; the work then resumes on its own, you don't redo it.`
114
+ : (gl.state && gl.state !== 'suspended')
115
+ ? `Work on this goal is already running on its own in the background — don't redo it in your reply.`
116
+ : `No work on this goal is running right now.`;
110
117
  const authorityLine = msg.reason === 'transition'
111
118
  ? 'This is the goal and success spec for this conversation. Run the current step against it.'
112
119
  : hasGoalAuthority(msg)
113
- ? `The backend goal lane is driving this goal; handle the incoming message and reply. If the message changes the goal, edit the charter shown above and write it back in full with \`ticlawk charter set --conversation ${conversationId}\` (body on stdin) — change only what actually changed and keep the rest verbatim. Writing it is what hands the change to the goal lane. See GOAL_AUTHORITY.md.`
120
+ ? `${stateLine ? stateLine + ' ' : ''}Handle this message and reply. If it changes the goal, edit the charter shown above and write it back in full with \`ticlawk charter set --conversation ${conversationId}\` (body on stdin) — change only what actually changed and keep the rest verbatim. That re-aims the work. See GOAL_AUTHORITY.md.`
114
121
  : 'Use it as current group goal and role context. The group admin owns charter and dashboard changes unless they explicitly delegate them.';
115
122
  return promptBlock(`
116
123
  [conversation_goal]