@atolis-hq/wake 0.1.17 → 0.1.19
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/README.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# Wake
|
|
2
2
|
|
|
3
|
-
Wake is a
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Wake is a control plane for autonomous software engineering. It watches the
|
|
4
|
+
channels your team already uses, coordinates agent activity and involves humans
|
|
5
|
+
when needed, and keeps the durable record attached to the work instead of the
|
|
6
|
+
terminal session that happened to run it.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
Create an issue, assign Wake, and keep doing your own work. Wake investigates,
|
|
9
|
+
asks for input when human judgment matters, proposes a plan, launches local
|
|
10
|
+
coding-agent CLIs to implement changes, opens pull requests, and carries the
|
|
11
|
+
conversation forward wherever the work is already happening.
|
|
12
|
+
|
|
13
|
+
Wake owns coordination. Coding agents execute the work.
|
|
10
14
|
|
|
11
15
|
## The Problem
|
|
12
16
|
|
|
@@ -27,10 +31,11 @@ out of the token-burning path wherever possible.
|
|
|
27
31
|
|
|
28
32
|
## Vision
|
|
29
33
|
|
|
30
|
-
Wake should make reliable, resumable, token-aware
|
|
34
|
+
Wake should make reliable, resumable, token-aware autonomous engineering
|
|
31
35
|
practical. The default operating model is asynchronous and channel-driven: work
|
|
32
|
-
enters
|
|
33
|
-
locally in an inspectable workspace or
|
|
36
|
+
enters through durable external systems, Wake keeps humans in the loop at useful
|
|
37
|
+
decision points, and execution happens locally in an inspectable workspace or
|
|
38
|
+
sandbox.
|
|
34
39
|
|
|
35
40
|
Wake is not trying to replace coding agents, issue trackers, or source control.
|
|
36
41
|
It coordinates across them. Over time it should become the layer that picks
|
|
@@ -37,7 +37,8 @@ export const indexHtml = `<!DOCTYPE html>
|
|
|
37
37
|
.statusbar .meta { color: rgba(255, 255, 255, 0.72); }
|
|
38
38
|
.pill { padding: 0.15rem 0.5rem; border-radius: 999px; font-size: 0.75rem; font-weight: 600; }
|
|
39
39
|
.pill-idle { background: #1f3d2c; color: #7fe3a3; }
|
|
40
|
-
.pill-
|
|
40
|
+
.pill-polling { background: #1f3350; color: #7fb3ff; }
|
|
41
|
+
.pill-working { background: #2d1f50; color: #c79bff; }
|
|
41
42
|
.pill-paused { background: #4a3510; color: #ffcf7f; }
|
|
42
43
|
nav { display: flex; gap: 0.25rem; padding: 0.4rem 1rem 0 0.3rem; background: var(--brand-darker); border-bottom: 1px solid #2c313a; }
|
|
43
44
|
nav button { background: none; border: none; border-bottom: 2px solid transparent; color: rgba(255, 255, 255, 0.65); padding: 0.4rem 0.7rem 0.45rem; margin-bottom: -1px; cursor: pointer; font-size: 0.85rem; transition: color 0.12s ease; }
|
|
@@ -112,16 +112,26 @@ export async function buildStatus(input) {
|
|
|
112
112
|
input.stateStore.listRecentRunRecords(1),
|
|
113
113
|
buildBoard(input),
|
|
114
114
|
]);
|
|
115
|
-
const
|
|
116
|
-
|
|
115
|
+
const [tickLock, runnerLock] = await Promise.all([
|
|
116
|
+
readLockInfo(input.stateStore.paths.tickLockFile, input.now),
|
|
117
|
+
readLockInfo(input.stateStore.paths.runnerLockFile, input.now),
|
|
118
|
+
]);
|
|
119
|
+
const tickLockLive = tickLock.present && tickLock.pidAlive === true;
|
|
120
|
+
const runnerLockLive = runnerLock.present && runnerLock.pidAlive === true;
|
|
117
121
|
// A quota-paused runner (#67) no longer stops the loop - routing falls
|
|
118
122
|
// sideways to another candidate in the tier, so only the manual pause file
|
|
119
123
|
// is a hard stop here. Per-runner health is surfaced separately below.
|
|
124
|
+
//
|
|
125
|
+
// Intake (tick.lock) and agent execution (runner.lock) are separate locks -
|
|
126
|
+
// an in-flight agent run holds only runner.lock, so both must be checked or
|
|
127
|
+
// the pill reads "idle" for the entire duration of a run.
|
|
120
128
|
const loopState = paused
|
|
121
129
|
? 'paused'
|
|
122
|
-
:
|
|
123
|
-
? '
|
|
124
|
-
:
|
|
130
|
+
: runnerLockLive
|
|
131
|
+
? 'working'
|
|
132
|
+
: tickLockLive
|
|
133
|
+
? 'polling'
|
|
134
|
+
: 'idle';
|
|
125
135
|
const runnerHealth = ledger?.runners ?? {};
|
|
126
136
|
const lastEvent = recentEvents[0];
|
|
127
137
|
const lastRun = recentRuns[0];
|
|
@@ -155,7 +165,8 @@ export async function buildStatus(input) {
|
|
|
155
165
|
loopState,
|
|
156
166
|
paused,
|
|
157
167
|
runnerHealth,
|
|
158
|
-
lock,
|
|
168
|
+
lock: tickLock,
|
|
169
|
+
runnerLock,
|
|
159
170
|
lastEvent: lastEvent === undefined
|
|
160
171
|
? undefined
|
|
161
172
|
: {
|
package/dist/src/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const wakeVersion = "0.1.
|
|
1
|
+
export const wakeVersion = "0.1.19+ga9612b2";
|