cli-jaw 1.2.8 → 1.2.9

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.
@@ -4,6 +4,7 @@
4
4
  // CLI (bin/commands/orchestrate.ts) and server share the same DB.
5
5
  import { getOrcState, setOrcState, resetOrcState } from '../core/db.js';
6
6
  import { broadcast } from '../core/bus.js';
7
+ import { readLatestWorklog } from '../memory/worklog.js';
7
8
  // ─── State Read/Write (DB-backed) ───────────────────
8
9
  export function getState() {
9
10
  const row = getOrcState();
@@ -25,11 +26,25 @@ export function setState(s, ctx) {
25
26
  ? (ctx ? JSON.stringify(ctx) : null)
26
27
  : getOrcState()?.ctx || null;
27
28
  setOrcState.run(s, ctxJson, 'default');
28
- broadcast('orc_state', { state: s });
29
+ // Parse worklog title (max 2 words + )
30
+ let title = 'PABCD';
31
+ try {
32
+ const wl = readLatestWorklog();
33
+ if (wl?.content) {
34
+ const firstLine = wl.content.split('\n')[0] || '';
35
+ const raw = firstLine.replace(/^#\s*Work Log:\s*"?/, '').replace(/"?\s*$/, '').trim();
36
+ if (raw) {
37
+ const words = raw.split(/\s+/);
38
+ title = words.slice(0, 2).join(' ') + (words.length > 2 ? '…' : '');
39
+ }
40
+ }
41
+ }
42
+ catch { /* fallback to PABCD */ }
43
+ broadcast('orc_state', { state: s, title });
29
44
  }
30
45
  export function resetState() {
31
46
  resetOrcState();
32
- broadcast('orc_state', { state: 'IDLE' });
47
+ broadcast('orc_state', { state: 'IDLE', title: '' });
33
48
  }
34
49
  // ─── Prefix Map ─────────────────────────────────────
35
50
  // B state: only worker results get Bb2 prefix, user messages get no prefix.
@@ -1 +1 @@
1
- {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../../src/orchestrator/state-machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../../src/orchestrator/state-machine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cli-jaw",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "description": "Personal AI assistant powered by 5 engines (Claude, Codex, Gemini, OpenCode, Copilot) — Web, Terminal, and Telegram interfaces with 107 built-in skills",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -51,3 +51,160 @@ body[data-orc-state].orc-pulse #chatMessages {
51
51
  border: 1px solid var(--orc-glow);
52
52
  text-transform: uppercase;
53
53
  }
54
+
55
+ /* ─── PABCD Roadmap Bar ─── */
56
+ .pabc-roadmap {
57
+ display: none;
58
+ align-items: center;
59
+ background: linear-gradient(135deg, var(--surface) 0%, #14141f 100%);
60
+ border: 1px solid var(--border);
61
+ border-radius: 10px;
62
+ padding: 12px 22px;
63
+ position: relative;
64
+ box-shadow: 0 2px 16px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255,255,255,0.03);
65
+ overflow: visible;
66
+ }
67
+ .pabc-roadmap.visible {
68
+ display: flex;
69
+ animation: pabc-fadeSlideIn 0.5s cubic-bezier(0.22, 1, 0.36, 1);
70
+ }
71
+
72
+ @keyframes pabc-fadeSlideIn {
73
+ from { opacity: 0; transform: translateY(-12px) scale(0.98); }
74
+ to { opacity: 1; transform: translateY(0) scale(1); }
75
+ }
76
+
77
+ .pabc-dot {
78
+ width: 26px; height: 26px;
79
+ border-radius: 50%;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ font-family: var(--font-display, var(--font-mono));
84
+ font-size: 10px;
85
+ font-weight: 700;
86
+ flex-shrink: 0;
87
+ transition: all 0.5s cubic-bezier(0.22, 1, 0.36, 1);
88
+ z-index: 2;
89
+ letter-spacing: 0.5px;
90
+ }
91
+ .pabc-dot.future {
92
+ background: var(--surface, #181825);
93
+ color: var(--text-dim, #6e6e8a);
94
+ border: 1px solid var(--border);
95
+ }
96
+ .pabc-dot.active {
97
+ color: #fff;
98
+ border: 2px solid currentColor;
99
+ box-shadow: 0 0 14px -3px currentColor, 0 0 4px -1px currentColor;
100
+ transform: scale(1.1);
101
+ }
102
+ .pabc-dot.done {
103
+ color: rgba(255,255,255,0.9);
104
+ border: 1px solid rgba(255,255,255,0.1);
105
+ opacity: 0.65;
106
+ }
107
+ .pabc-dot[data-phase="P"].active, .pabc-dot[data-phase="P"].done { background: var(--orc-glow-P); }
108
+ .pabc-dot[data-phase="A"].active, .pabc-dot[data-phase="A"].done { background: var(--orc-glow-A); }
109
+ .pabc-dot[data-phase="B"].active, .pabc-dot[data-phase="B"].done { background: var(--orc-glow-B); }
110
+ .pabc-dot[data-phase="C"].active, .pabc-dot[data-phase="C"].done { background: var(--orc-glow-C); }
111
+
112
+ .pabc-connector {
113
+ flex: 1;
114
+ height: 2px;
115
+ background: linear-gradient(90deg, var(--border) 0%, #2a2a3e 50%, var(--border) 100%);
116
+ min-width: 44px;
117
+ transition: all 0.5s ease;
118
+ border-radius: 1px;
119
+ }
120
+ .pabc-connector.done {
121
+ background: linear-gradient(90deg, var(--text-dim) 0%, #6e6e8a 50%, var(--text-dim) 100%);
122
+ box-shadow: 0 0 6px -2px var(--text-dim);
123
+ }
124
+
125
+ .pabc-center {
126
+ flex-shrink: 0;
127
+ display: flex;
128
+ flex-direction: column;
129
+ align-items: center;
130
+ padding: 0 20px;
131
+ }
132
+ .pabc-brand {
133
+ font-family: var(--font-display, var(--font-mono));
134
+ font-size: 13px;
135
+ font-weight: 700;
136
+ letter-spacing: 4px;
137
+ background: linear-gradient(90deg, var(--orc-glow-P), var(--orc-glow-A), var(--orc-glow-B), var(--orc-glow-C));
138
+ -webkit-background-clip: text;
139
+ -webkit-text-fill-color: transparent;
140
+ background-clip: text;
141
+ filter: brightness(1.1);
142
+ }
143
+ .pabc-tagline {
144
+ font-family: var(--font-mono);
145
+ font-size: 7px;
146
+ color: var(--text-dim, #6e6e8a);
147
+ letter-spacing: 2px;
148
+ text-transform: uppercase;
149
+ margin-top: 2px;
150
+ opacity: 0.7;
151
+ }
152
+
153
+ /* Shark runner */
154
+ .shark-runner {
155
+ width: 36px; height: 24px;
156
+ background: url('/img/shark-sprite.png') 0 0 no-repeat;
157
+ background-size: 360px 24px;
158
+ position: absolute;
159
+ top: -13px;
160
+ left: 22px;
161
+ z-index: 10;
162
+ transition: left 1.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
163
+ pointer-events: none;
164
+ filter: drop-shadow(0 2px 4px rgba(0,0,0,0.4));
165
+ display: none;
166
+ }
167
+ .shark-runner.running {
168
+ display: block;
169
+ animation: shark-run 1s steps(10) infinite;
170
+ }
171
+ @keyframes shark-run {
172
+ to { background-position: -360px 0; }
173
+ }
174
+
175
+ /* Shimmer on Done */
176
+ @keyframes pabc-shimmer {
177
+ 0% { opacity: 1; filter: brightness(1); }
178
+ 25% { opacity: 1; filter: brightness(1.4); box-shadow: 0 0 24px rgba(168,85,247,0.2); }
179
+ 100% { opacity: 0; transform: translateY(-8px) scale(0.98); }
180
+ }
181
+ .pabc-roadmap.shimmer-out {
182
+ animation: pabc-shimmer 1s ease-out forwards;
183
+ }
184
+
185
+ /* ─── Light Theme Overrides ─── */
186
+ [data-theme="light"] .pabc-roadmap {
187
+ background: linear-gradient(135deg, var(--surface) 0%, #f0f0f5 100%);
188
+ box-shadow: 0 2px 12px rgba(0,0,0,0.08), inset 0 1px 0 rgba(255,255,255,0.6);
189
+ }
190
+ [data-theme="light"] .pabc-dot.future {
191
+ background: #eef0f5;
192
+ color: #9a9ab0;
193
+ }
194
+ [data-theme="light"] .pabc-dot.active {
195
+ color: #fff;
196
+ }
197
+ [data-theme="light"] .pabc-dot.done {
198
+ color: #fff;
199
+ border-color: rgba(0,0,0,0.06);
200
+ }
201
+ [data-theme="light"] .pabc-connector {
202
+ background: linear-gradient(90deg, #d8d8e4 0%, #e4e4ef 50%, #d8d8e4 100%);
203
+ }
204
+ [data-theme="light"] .pabc-connector.done {
205
+ background: linear-gradient(90deg, #b0b0c0 0%, #c0c0d0 50%, #b0b0c0 100%);
206
+ box-shadow: none;
207
+ }
208
+ [data-theme="light"] .shark-runner {
209
+ filter: drop-shadow(0 1px 2px rgba(0,0,0,0.15));
210
+ }