@dmsdc-ai/aterm-darwin-arm64 0.1.43 → 0.1.45

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.
Binary file
@@ -25,6 +25,15 @@ ensure_lessons_file() {
25
25
  [ -f "$f" ] || echo '{"invariants":[],"failed":[]}' > "$f"
26
26
  }
27
27
 
28
+ print_ecosystem_status() {
29
+ cat <<'STATUS'
30
+ brain: ✅ installed
31
+ telepty: ✅ installed
32
+ deliberation: ✅ installed
33
+ devkit: ✅ installed
34
+ STATUS
35
+ }
36
+
28
37
  aterm_ipc() {
29
38
  python3 -c '
30
39
  import socket, sys, json
@@ -100,17 +109,119 @@ finally:
100
109
 
101
110
  case "${1:-help}" in
102
111
  list)
103
- if [[ -z "$ATERM_IPC_SOCKET" ]]; then exec telepty list "${@:2}"; fi
104
112
  if [[ "${2:-}" == "--json" ]]; then
105
- ATERM_LIST_JSON=1 aterm_ipc list
113
+ # JSON mode: output merged JSON
114
+ python3 -c '
115
+ import json, sys, os, subprocess, os.path
116
+
117
+ sessions = []
118
+
119
+ # 1. aterm internal sessions
120
+ sock = os.environ.get("ATERM_IPC_SOCKET", "")
121
+ if sock:
122
+ import socket as S
123
+ try:
124
+ s = S.socket(S.AF_UNIX, S.SOCK_STREAM)
125
+ s.settimeout(5)
126
+ s.connect(sock)
127
+ s.sendall(json.dumps({"action": "ListWorkspaces"}).encode() + b"\n")
128
+ s.shutdown(S.SHUT_WR)
129
+ data = b""
130
+ while True:
131
+ chunk = s.recv(4096)
132
+ if not chunk: break
133
+ data += chunk
134
+ if b"\n" in data: break
135
+ s.close()
136
+ resp = json.loads(data.decode().strip().split("\n")[0])
137
+ for ws in resp.get("data", []):
138
+ ws["terminal"] = "aterm"
139
+ ws.setdefault("name", os.path.basename(ws.get("cwd", "")) or ws.get("id", "?"))
140
+ sessions.append(ws)
141
+ except: pass
142
+
143
+ # 2. telepty external sessions (only if installed)
144
+ try:
145
+ result = subprocess.run(["telepty", "list", "--json"], capture_output=True, text=True, timeout=5)
146
+ if result.returncode == 0:
147
+ tdata = json.loads(result.stdout)
148
+ for ts in (tdata if isinstance(tdata, list) else tdata.get("sessions", [])):
149
+ ts.setdefault("terminal", ts.get("terminal", "external"))
150
+ ts.setdefault("name", ts.get("id", "?"))
151
+ sessions.append(ts)
152
+ except (FileNotFoundError, subprocess.TimeoutExpired, json.JSONDecodeError): pass
153
+
154
+ print(json.dumps({"sessions": sessions}))
155
+ '
106
156
  else
107
- aterm_ipc list
157
+ # Table mode: merged display
158
+ python3 -c '
159
+ import json, sys, os, subprocess, os.path
160
+
161
+ sessions = []
162
+
163
+ # 1. aterm internal sessions
164
+ sock = os.environ.get("ATERM_IPC_SOCKET", "")
165
+ if sock:
166
+ import socket as S
167
+ try:
168
+ s = S.socket(S.AF_UNIX, S.SOCK_STREAM)
169
+ s.settimeout(5)
170
+ s.connect(sock)
171
+ s.sendall(json.dumps({"action": "ListWorkspaces"}).encode() + b"\n")
172
+ s.shutdown(S.SHUT_WR)
173
+ data = b""
174
+ while True:
175
+ chunk = s.recv(4096)
176
+ if not chunk: break
177
+ data += chunk
178
+ if b"\n" in data: break
179
+ s.close()
180
+ resp = json.loads(data.decode().strip().split("\n")[0])
181
+ for ws in resp.get("data", []):
182
+ name = ws.get("name") or os.path.basename(ws.get("cwd", "")) or ws.get("id", "?")
183
+ cli = ws.get("cli", "")
184
+ cwd = ws.get("cwd", "")
185
+ sessions.append((name, cli, cwd, "aterm"))
186
+ except: pass
187
+
188
+ # 2. telepty external sessions (only if installed)
189
+ try:
190
+ result = subprocess.run(["telepty", "list", "--json"], capture_output=True, text=True, timeout=5)
191
+ if result.returncode == 0:
192
+ tdata = json.loads(result.stdout)
193
+ for ts in (tdata if isinstance(tdata, list) else tdata.get("sessions", [])):
194
+ name = ts.get("name") or ts.get("id", "?")
195
+ cli = ts.get("cli", "")
196
+ cwd = ts.get("cwd", "")
197
+ terminal = ts.get("terminal", "external")
198
+ sessions.append((name, cli, cwd, terminal))
199
+ except (FileNotFoundError, subprocess.TimeoutExpired, json.JSONDecodeError): pass
200
+
201
+ if not sessions:
202
+ print("(no reachable sessions)")
203
+ else:
204
+ cols = ["NAME", "CLI", "CWD", "TERMINAL"]
205
+ widths = [max(len(c), *(len(r[i]) for r in sessions)) for i, c in enumerate(cols)]
206
+ fmt = " ".join(f"{{:<{w}}}" for w in widths)
207
+ print(fmt.format(*cols))
208
+ print(" ".join("\u2500" * w for w in widths))
209
+ for r in sessions:
210
+ print(fmt.format(*r))
211
+ if all(r[3] == "aterm" for r in sessions):
212
+ print()
213
+ print("💡 All sessions are aterm-internal. Install telepty for cross-terminal: already included!")
214
+ '
108
215
  fi ;;
109
216
  inject)
110
217
  if [[ -z "$ATERM_IPC_SOCKET" ]]; then exec telepty inject "${@:2}"; fi
111
218
  [[ $# -lt 3 ]] && { echo '{"error":"usage: aterm inject <workspace> <text>"}' >&2; exit 1; }
112
219
  aterm_ipc inject "${@:2}" ;;
113
220
  status)
221
+ if [[ $# -eq 1 ]]; then
222
+ print_ecosystem_status
223
+ exit 0
224
+ fi
114
225
  if [[ -z "$ATERM_IPC_SOCKET" ]]; then exec telepty status "${@:2}"; fi
115
226
  [[ $# -lt 2 ]] && { echo '{"error":"usage: aterm status <workspace>"}' >&2; exit 1; }
116
227
  aterm_ipc status "$2" ;;
@@ -210,6 +321,7 @@ print(json.dumps({"status":"ok","type": ltype}))
210
321
  |---------|-------------|
211
322
  | `aterm list` | List workspaces (NAME, CLI, CWD, TERMINAL) |
212
323
  | `aterm inject <workspace> <text>` | Send text to a workspace |
324
+ | `aterm status` | Show bundled ecosystem health |
213
325
  | `aterm status <workspace>` | Check workspace status |
214
326
  | `aterm focus <workspace>` | Focus a workspace tab |
215
327
  | `aterm tasks` | List pending tasks |
@@ -220,6 +332,13 @@ print(json.dumps({"status":"ok","type": ltype}))
220
332
  | `aterm lessons add '<lesson>' --type failed` | Add a failed pattern |
221
333
  | `aterm help` | Show this help |
222
334
 
335
+ ## Ecosystem
336
+
337
+ ✅ brain (AI profile management) — already installed
338
+ ✅ telepty (cross-terminal communication) — already installed
339
+ ✅ deliberation (multi-AI discussions) — already installed
340
+ ✅ devkit (workspace bootstrapping) — already installed
341
+
223
342
  ## Natural Language → Command Mapping
224
343
 
225
344
  ### Internal sessions (same aterm, $ATERM_IPC_SOCKET set)
@@ -6,7 +6,7 @@
6
6
  <dict>
7
7
  <key>Resources/bin/aterm</key>
8
8
  <data>
9
- 31T9cMdZ1Kvf/pt8VMMVvNoeP/k=
9
+ 1HuLkmDie3Huck1M3zk1y2k9nHk=
10
10
  </data>
11
11
  </dict>
12
12
  <key>files2</key>
@@ -15,16 +15,16 @@
15
15
  <dict>
16
16
  <key>cdhash</key>
17
17
  <data>
18
- 8gJg6YBgIxIudeTA+itvRdqpKhk=
18
+ 9WsGAC35qT+7mJPrbcRgCAnPUmU=
19
19
  </data>
20
20
  <key>requirement</key>
21
- <string>cdhash H"f20260e9806023122e75e4c0fa2b6f45daa92a19"</string>
21
+ <string>cdhash H"f56b06002df9a93fbb9893eb6dc4600809cf5265"</string>
22
22
  </dict>
23
23
  <key>Resources/bin/aterm</key>
24
24
  <dict>
25
25
  <key>hash2</key>
26
26
  <data>
27
- mSWI2PyUfn/66Wdn1bep8WpRprwpfB+L0/up5xON/rQ=
27
+ 2w1QxQ4iZe+lQkanS659+19iwyQvKcZGja/KKimSqcw=
28
28
  </data>
29
29
  </dict>
30
30
  </dict>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dmsdc-ai/aterm-darwin-arm64",
3
- "version": "0.1.43",
3
+ "version": "0.1.45",
4
4
  "description": "darwin-arm64 native bundle for @dmsdc-ai/aterm",
5
5
  "type": "module",
6
6
  "files": [