space-architect 7.1.0 → 9.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +108 -0
- data/README.md +58 -246
- data/lib/space_architect/architect_project.rb +40 -180
- data/lib/space_architect/bug_report.rb +2 -1
- data/lib/space_architect/cli/architect.rb +69 -103
- data/lib/space_architect/cli/research.rb +1 -1
- data/lib/space_architect/cli.rb +9 -14
- data/lib/space_architect/harness.rb +97 -344
- data/lib/space_architect/pi/builder-guard.ts +103 -0
- data/lib/space_architect/research/mux.rb +47 -32
- data/lib/space_architect/research/pi_events.rb +70 -0
- data/lib/space_architect/research/renderer.rb +39 -39
- data/lib/space_architect/research/supervisor.rb +35 -14
- data/lib/space_architect/research.rb +1 -6
- data/lib/space_architect/session_sync/bin_path.rb +1 -1
- data/lib/space_architect/session_sync/cursor.rb +1 -1
- data/lib/space_architect/session_sync/plist.rb +1 -1
- data/lib/{space_core → space_architect}/version.rb +2 -2
- data/lib/space_architect.rb +1 -2
- data/skill/architect/SKILL.md +30 -25
- data/skill/architect/dispatch.md +137 -115
- data/skill/architect/research.md +14 -8
- data/skill/architect-research/SKILL.md +18 -11
- data/skill/architect-vocabulary/SKILL.md +3 -3
- metadata +20 -178
- data/exe/space +0 -13
- data/exe/src +0 -13
- data/lib/space_architect/cli/space.rb +0 -29
- data/lib/space_architect/cli/src.rb +0 -38
- data/lib/space_architect/dispatcher.rb +0 -25
- data/lib/space_core/atomic_write.rb +0 -21
- data/lib/space_core/cli/base_command.rb +0 -19
- data/lib/space_core/cli/build.rb +0 -27
- data/lib/space_core/cli/config.rb +0 -49
- data/lib/space_core/cli/current.rb +0 -16
- data/lib/space_core/cli/help.rb +0 -195
- data/lib/space_core/cli/helpers.rb +0 -115
- data/lib/space_core/cli/init.rb +0 -29
- data/lib/space_core/cli/list.rb +0 -24
- data/lib/space_core/cli/loop_status.rb +0 -47
- data/lib/space_core/cli/new.rb +0 -38
- data/lib/space_core/cli/pack.rb +0 -29
- data/lib/space_core/cli/path.rb +0 -16
- data/lib/space_core/cli/repeatable_options.rb +0 -84
- data/lib/space_core/cli/repo.rb +0 -76
- data/lib/space_core/cli/run.rb +0 -44
- data/lib/space_core/cli/shell.rb +0 -125
- data/lib/space_core/cli/show.rb +0 -21
- data/lib/space_core/cli/status.rb +0 -74
- data/lib/space_core/cli/use.rb +0 -17
- data/lib/space_core/cli.rb +0 -177
- data/lib/space_core/commands.rb +0 -51
- data/lib/space_core/config.rb +0 -152
- data/lib/space_core/errors.rb +0 -14
- data/lib/space_core/git_client.rb +0 -49
- data/lib/space_core/mise_client.rb +0 -37
- data/lib/space_core/oci_builder.rb +0 -56
- data/lib/space_core/oci_packer.rb +0 -103
- data/lib/space_core/oci_runner.rb +0 -89
- data/lib/space_core/paths.rb +0 -58
- data/lib/space_core/repo_reference.rb +0 -19
- data/lib/space_core/repo_resolver.rb +0 -167
- data/lib/space_core/shell_integration.rb +0 -438
- data/lib/space_core/slugger.rb +0 -16
- data/lib/space_core/space.rb +0 -174
- data/lib/space_core/space_store.rb +0 -319
- data/lib/space_core/state.rb +0 -86
- data/lib/space_core/templates/oci/dockerfile.erb +0 -73
- data/lib/space_core/templates/oci/dockerignore.erb +0 -17
- data/lib/space_core/templates/oci/entrypoint.sh.erb +0 -16
- data/lib/space_core/terminal.rb +0 -161
- data/lib/space_core/warnings.rb +0 -13
- data/lib/space_core/xdg.rb +0 -33
- data/lib/space_core.rb +0 -26
- data/lib/space_src/cli/clone.rb +0 -54
- data/lib/space_src/cli/config.rb +0 -65
- data/lib/space_src/cli/daemon.rb +0 -362
- data/lib/space_src/cli/options.rb +0 -21
- data/lib/space_src/cli/org.rb +0 -199
- data/lib/space_src/cli/repo.rb +0 -169
- data/lib/space_src/cli/shell.rb +0 -121
- data/lib/space_src/cli/status.rb +0 -75
- data/lib/space_src/cli/sync.rb +0 -161
- data/lib/space_src/cli.rb +0 -159
- data/lib/space_src/cloner.rb +0 -77
- data/lib/space_src/config/contract.rb +0 -54
- data/lib/space_src/config/duration.rb +0 -79
- data/lib/space_src/config/model.rb +0 -49
- data/lib/space_src/config/store.rb +0 -156
- data/lib/space_src/forge/client.rb +0 -31
- data/lib/space_src/forge/github.rb +0 -98
- data/lib/space_src/launchd/agent.rb +0 -195
- data/lib/space_src/launchd/plist.rb +0 -129
- data/lib/space_src/log_rotator.rb +0 -46
- data/lib/space_src/migration.rb +0 -43
- data/lib/space_src/nav.rb +0 -99
- data/lib/space_src/paths.rb +0 -72
- data/lib/space_src/scm/client.rb +0 -87
- data/lib/space_src/scm/git.rb +0 -232
- data/lib/space_src/scm/status.rb +0 -24
- data/lib/space_src/shell.rb +0 -90
- data/lib/space_src/shell_integration.rb +0 -321
- data/lib/space_src/state/lock.rb +0 -59
- data/lib/space_src/state/store.rb +0 -140
- data/lib/space_src/sync/engine.rb +0 -503
- data/lib/space_src/sync/repo_plan.rb +0 -215
- data/lib/space_src/sync/report.rb +0 -18
- data/lib/space_src/ui/interactive_reporter.rb +0 -280
- data/lib/space_src/ui/json_reporter.rb +0 -39
- data/lib/space_src/ui/mode.rb +0 -68
- data/lib/space_src/ui/plain_reporter.rb +0 -53
- data/lib/space_src/ui/reporter.rb +0 -48
- data/lib/space_src/version.rb +0 -7
- data/lib/space_src.rb +0 -38
|
@@ -34,7 +34,7 @@ the loop.
|
|
|
34
34
|
judgment mode): arbitrates disagreements, writes and freezes iteration files,
|
|
35
35
|
calls kill/continue, merges builder output. Never writes implementation code.
|
|
36
36
|
- **builder** — the implementation role: a cheaper model run headless via
|
|
37
|
-
`architect dispatch` (reference harness: `
|
|
37
|
+
`architect dispatch` (reference harness: `pi -p`), one per lane in its own
|
|
38
38
|
worktree. Reports
|
|
39
39
|
raw evidence; never grades its own work; never edits `architecture/`.
|
|
40
40
|
|
|
@@ -131,8 +131,8 @@ Safe **read-only** commands to orient yourself (these don't run the loop):
|
|
|
131
131
|
|
|
132
132
|
```sh
|
|
133
133
|
architect status # project state: iterations, freeze shas, lanes, verdicts
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
space show # the space you're standing in (space-cadet binary)
|
|
135
|
+
space list # all your spaces
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
## Maintenance
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: space-architect
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 9.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eric Jacobs
|
|
@@ -10,47 +10,47 @@ cert_chain: []
|
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
-
name:
|
|
13
|
+
name: space-cadet
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '
|
|
18
|
+
version: '9.1'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '
|
|
25
|
+
version: '9.1'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: async-
|
|
27
|
+
name: async-http
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '0.95'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '0.95'
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: async-
|
|
41
|
+
name: async-process
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '
|
|
46
|
+
version: '1.4'
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
53
|
+
version: '1.4'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: protocol-http
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -107,48 +107,6 @@ dependencies:
|
|
|
107
107
|
- - "~>"
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
109
|
version: '1.10'
|
|
110
|
-
- !ruby/object:Gem::Dependency
|
|
111
|
-
name: dry-schema
|
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - "~>"
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '1.16'
|
|
117
|
-
type: :runtime
|
|
118
|
-
prerelease: false
|
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - "~>"
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '1.16'
|
|
124
|
-
- !ruby/object:Gem::Dependency
|
|
125
|
-
name: dry-struct
|
|
126
|
-
requirement: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - "~>"
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '1.8'
|
|
131
|
-
type: :runtime
|
|
132
|
-
prerelease: false
|
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - "~>"
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '1.8'
|
|
138
|
-
- !ruby/object:Gem::Dependency
|
|
139
|
-
name: dry-types
|
|
140
|
-
requirement: !ruby/object:Gem::Requirement
|
|
141
|
-
requirements:
|
|
142
|
-
- - "~>"
|
|
143
|
-
- !ruby/object:Gem::Version
|
|
144
|
-
version: '1.9'
|
|
145
|
-
type: :runtime
|
|
146
|
-
prerelease: false
|
|
147
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
-
requirements:
|
|
149
|
-
- - "~>"
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
version: '1.9'
|
|
152
110
|
- !ruby/object:Gem::Dependency
|
|
153
111
|
name: dry-validation
|
|
154
112
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -163,34 +121,6 @@ dependencies:
|
|
|
163
121
|
- - "~>"
|
|
164
122
|
- !ruby/object:Gem::Version
|
|
165
123
|
version: '1.11'
|
|
166
|
-
- !ruby/object:Gem::Dependency
|
|
167
|
-
name: xdg
|
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
|
169
|
-
requirements:
|
|
170
|
-
- - "~>"
|
|
171
|
-
- !ruby/object:Gem::Version
|
|
172
|
-
version: '10.2'
|
|
173
|
-
type: :runtime
|
|
174
|
-
prerelease: false
|
|
175
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
-
requirements:
|
|
177
|
-
- - "~>"
|
|
178
|
-
- !ruby/object:Gem::Version
|
|
179
|
-
version: '10.2'
|
|
180
|
-
- !ruby/object:Gem::Dependency
|
|
181
|
-
name: tty-cursor
|
|
182
|
-
requirement: !ruby/object:Gem::Requirement
|
|
183
|
-
requirements:
|
|
184
|
-
- - "~>"
|
|
185
|
-
- !ruby/object:Gem::Version
|
|
186
|
-
version: '0.7'
|
|
187
|
-
type: :runtime
|
|
188
|
-
prerelease: false
|
|
189
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
190
|
-
requirements:
|
|
191
|
-
- - "~>"
|
|
192
|
-
- !ruby/object:Gem::Version
|
|
193
|
-
version: '0.7'
|
|
194
124
|
- !ruby/object:Gem::Dependency
|
|
195
125
|
name: minitest
|
|
196
126
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -233,16 +163,15 @@ dependencies:
|
|
|
233
163
|
- - "~>"
|
|
234
164
|
- !ruby/object:Gem::Version
|
|
235
165
|
version: '13.0'
|
|
236
|
-
description: 'A dry-cli CLI for
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
166
|
+
description: 'A dry-cli CLI for the Architect Loop: iterations, briefs, freezes, verdicts,
|
|
167
|
+
lane worktrees, and headless pi dispatch — the judgment loop that runs inside space-cadet''s
|
|
168
|
+
task-scoped workspaces. Depends on the space-cadet gem for the spaces substrate
|
|
169
|
+
(hard) and the repo-tender gem for the session-sync launchd agent (soft, install
|
|
170
|
+
at will).'
|
|
240
171
|
email:
|
|
241
172
|
- eric@ebj.dev
|
|
242
173
|
executables:
|
|
243
174
|
- architect
|
|
244
|
-
- space
|
|
245
|
-
- src
|
|
246
175
|
extensions: []
|
|
247
176
|
extra_rdoc_files: []
|
|
248
177
|
files:
|
|
@@ -250,24 +179,21 @@ files:
|
|
|
250
179
|
- LICENSE.txt
|
|
251
180
|
- README.md
|
|
252
181
|
- exe/architect
|
|
253
|
-
- exe/space
|
|
254
|
-
- exe/src
|
|
255
182
|
- lib/space_architect.rb
|
|
256
183
|
- lib/space_architect/architect_project.rb
|
|
257
184
|
- lib/space_architect/bug_report.rb
|
|
258
185
|
- lib/space_architect/cli.rb
|
|
259
186
|
- lib/space_architect/cli/architect.rb
|
|
260
187
|
- lib/space_architect/cli/research.rb
|
|
261
|
-
- lib/space_architect/cli/space.rb
|
|
262
|
-
- lib/space_architect/cli/src.rb
|
|
263
188
|
- lib/space_architect/conversations_client.rb
|
|
264
|
-
- lib/space_architect/dispatcher.rb
|
|
265
189
|
- lib/space_architect/gate_evaluator.rb
|
|
266
190
|
- lib/space_architect/gate_lint.rb
|
|
267
191
|
- lib/space_architect/harness.rb
|
|
268
192
|
- lib/space_architect/jobs_client.rb
|
|
193
|
+
- lib/space_architect/pi/builder-guard.ts
|
|
269
194
|
- lib/space_architect/research.rb
|
|
270
195
|
- lib/space_architect/research/mux.rb
|
|
196
|
+
- lib/space_architect/research/pi_events.rb
|
|
271
197
|
- lib/space_architect/research/registry.rb
|
|
272
198
|
- lib/space_architect/research/renderer.rb
|
|
273
199
|
- lib/space_architect/research/run.rb
|
|
@@ -283,91 +209,7 @@ files:
|
|
|
283
209
|
- lib/space_architect/templates/architect.md.erb
|
|
284
210
|
- lib/space_architect/templates/brief.md.erb
|
|
285
211
|
- lib/space_architect/templates/iteration.md.erb
|
|
286
|
-
- lib/
|
|
287
|
-
- lib/space_core/atomic_write.rb
|
|
288
|
-
- lib/space_core/cli.rb
|
|
289
|
-
- lib/space_core/cli/base_command.rb
|
|
290
|
-
- lib/space_core/cli/build.rb
|
|
291
|
-
- lib/space_core/cli/config.rb
|
|
292
|
-
- lib/space_core/cli/current.rb
|
|
293
|
-
- lib/space_core/cli/help.rb
|
|
294
|
-
- lib/space_core/cli/helpers.rb
|
|
295
|
-
- lib/space_core/cli/init.rb
|
|
296
|
-
- lib/space_core/cli/list.rb
|
|
297
|
-
- lib/space_core/cli/loop_status.rb
|
|
298
|
-
- lib/space_core/cli/new.rb
|
|
299
|
-
- lib/space_core/cli/pack.rb
|
|
300
|
-
- lib/space_core/cli/path.rb
|
|
301
|
-
- lib/space_core/cli/repeatable_options.rb
|
|
302
|
-
- lib/space_core/cli/repo.rb
|
|
303
|
-
- lib/space_core/cli/run.rb
|
|
304
|
-
- lib/space_core/cli/shell.rb
|
|
305
|
-
- lib/space_core/cli/show.rb
|
|
306
|
-
- lib/space_core/cli/status.rb
|
|
307
|
-
- lib/space_core/cli/use.rb
|
|
308
|
-
- lib/space_core/commands.rb
|
|
309
|
-
- lib/space_core/config.rb
|
|
310
|
-
- lib/space_core/errors.rb
|
|
311
|
-
- lib/space_core/git_client.rb
|
|
312
|
-
- lib/space_core/mise_client.rb
|
|
313
|
-
- lib/space_core/oci_builder.rb
|
|
314
|
-
- lib/space_core/oci_packer.rb
|
|
315
|
-
- lib/space_core/oci_runner.rb
|
|
316
|
-
- lib/space_core/paths.rb
|
|
317
|
-
- lib/space_core/repo_reference.rb
|
|
318
|
-
- lib/space_core/repo_resolver.rb
|
|
319
|
-
- lib/space_core/shell_integration.rb
|
|
320
|
-
- lib/space_core/slugger.rb
|
|
321
|
-
- lib/space_core/space.rb
|
|
322
|
-
- lib/space_core/space_store.rb
|
|
323
|
-
- lib/space_core/state.rb
|
|
324
|
-
- lib/space_core/templates/oci/dockerfile.erb
|
|
325
|
-
- lib/space_core/templates/oci/dockerignore.erb
|
|
326
|
-
- lib/space_core/templates/oci/entrypoint.sh.erb
|
|
327
|
-
- lib/space_core/terminal.rb
|
|
328
|
-
- lib/space_core/version.rb
|
|
329
|
-
- lib/space_core/warnings.rb
|
|
330
|
-
- lib/space_core/xdg.rb
|
|
331
|
-
- lib/space_src.rb
|
|
332
|
-
- lib/space_src/cli.rb
|
|
333
|
-
- lib/space_src/cli/clone.rb
|
|
334
|
-
- lib/space_src/cli/config.rb
|
|
335
|
-
- lib/space_src/cli/daemon.rb
|
|
336
|
-
- lib/space_src/cli/options.rb
|
|
337
|
-
- lib/space_src/cli/org.rb
|
|
338
|
-
- lib/space_src/cli/repo.rb
|
|
339
|
-
- lib/space_src/cli/shell.rb
|
|
340
|
-
- lib/space_src/cli/status.rb
|
|
341
|
-
- lib/space_src/cli/sync.rb
|
|
342
|
-
- lib/space_src/cloner.rb
|
|
343
|
-
- lib/space_src/config/contract.rb
|
|
344
|
-
- lib/space_src/config/duration.rb
|
|
345
|
-
- lib/space_src/config/model.rb
|
|
346
|
-
- lib/space_src/config/store.rb
|
|
347
|
-
- lib/space_src/forge/client.rb
|
|
348
|
-
- lib/space_src/forge/github.rb
|
|
349
|
-
- lib/space_src/launchd/agent.rb
|
|
350
|
-
- lib/space_src/launchd/plist.rb
|
|
351
|
-
- lib/space_src/log_rotator.rb
|
|
352
|
-
- lib/space_src/migration.rb
|
|
353
|
-
- lib/space_src/nav.rb
|
|
354
|
-
- lib/space_src/paths.rb
|
|
355
|
-
- lib/space_src/scm/client.rb
|
|
356
|
-
- lib/space_src/scm/git.rb
|
|
357
|
-
- lib/space_src/scm/status.rb
|
|
358
|
-
- lib/space_src/shell.rb
|
|
359
|
-
- lib/space_src/shell_integration.rb
|
|
360
|
-
- lib/space_src/state/lock.rb
|
|
361
|
-
- lib/space_src/state/store.rb
|
|
362
|
-
- lib/space_src/sync/engine.rb
|
|
363
|
-
- lib/space_src/sync/repo_plan.rb
|
|
364
|
-
- lib/space_src/sync/report.rb
|
|
365
|
-
- lib/space_src/ui/interactive_reporter.rb
|
|
366
|
-
- lib/space_src/ui/json_reporter.rb
|
|
367
|
-
- lib/space_src/ui/mode.rb
|
|
368
|
-
- lib/space_src/ui/plain_reporter.rb
|
|
369
|
-
- lib/space_src/ui/reporter.rb
|
|
370
|
-
- lib/space_src/version.rb
|
|
212
|
+
- lib/space_architect/version.rb
|
|
371
213
|
- skill/architect-research/SKILL.md
|
|
372
214
|
- skill/architect-research/lanes.md
|
|
373
215
|
- skill/architect-vocabulary/SKILL.md
|
|
@@ -396,6 +238,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
396
238
|
requirements: []
|
|
397
239
|
rubygems_version: 4.0.10
|
|
398
240
|
specification_version: 4
|
|
399
|
-
summary:
|
|
400
|
-
|
|
241
|
+
summary: The Architect Loop — structured judgment-and-build cycles for humans and
|
|
242
|
+
headless AI builders
|
|
401
243
|
test_files: []
|
data/exe/space
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
source_gemfile = File.expand_path("../Gemfile", __dir__)
|
|
5
|
-
if File.exist?(source_gemfile)
|
|
6
|
-
ENV["BUNDLE_GEMFILE"] ||= source_gemfile
|
|
7
|
-
require "bundler/setup"
|
|
8
|
-
$LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
require "space_core"
|
|
12
|
-
|
|
13
|
-
Space::Core::CLI.run(ARGV, $stdout, $stderr)
|
data/exe/src
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
source_gemfile = File.expand_path("../Gemfile", __dir__)
|
|
5
|
-
if File.exist?(source_gemfile)
|
|
6
|
-
ENV["BUNDLE_GEMFILE"] ||= source_gemfile
|
|
7
|
-
require "bundler/setup"
|
|
8
|
-
$LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
require "space_src"
|
|
12
|
-
|
|
13
|
-
Space::Src::CLI.run(ARGV, $stdout, $stderr)
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "space_core/cli"
|
|
4
|
-
|
|
5
|
-
module Space::Architect
|
|
6
|
-
module CLI
|
|
7
|
-
# Exit-code bridge to the Space::Core CLI engine.
|
|
8
|
-
# `architect space <args>` (and `exe/space <args>` via Space::Core::CLI directly)
|
|
9
|
-
# hands the raw remainder to Space::Core's own dry-cli registry and translates
|
|
10
|
-
# Space::Core's recorded Outcome into the host exit code.
|
|
11
|
-
# Space::Core has its own Registry, Outcome, and :space_core_cli_outcome thread-local;
|
|
12
|
-
# this is the seam between the two registries (NOT a re-registration).
|
|
13
|
-
def self.dispatch_space(rest, out = $stdout, err = $stderr)
|
|
14
|
-
if ::Space::Core::CLI::TOP_LEVEL_HELP.include?(rest)
|
|
15
|
-
out.puts Dry::CLI::Usage.call(::Space::Core::CLI::Registry.get([]))
|
|
16
|
-
return 0
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
if ::Space::Core::CLI::VERSION_REQUEST.include?(rest)
|
|
20
|
-
out.puts ::Space::Core::VERSION
|
|
21
|
-
return 0
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
Thread.current[:space_core_cli_outcome] = nil
|
|
25
|
-
Dry::CLI.new(::Space::Core::CLI::Registry).call(arguments: rest, out: out, err: err)
|
|
26
|
-
::Space::Core::CLI.last_outcome&.exit_code || 0
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "space_src/cli"
|
|
4
|
-
|
|
5
|
-
module Space::Architect
|
|
6
|
-
module CLI
|
|
7
|
-
# Exit-code bridge to the Space::Src CLI engine.
|
|
8
|
-
# `architect src <args>` hands the raw remainder to Space::Src's own dry-cli
|
|
9
|
-
# registry and translates Space::Src's recorded Outcome into the host exit code.
|
|
10
|
-
# Space::Src has its own Registry, Outcome, and :space_src_cli_* thread-locals;
|
|
11
|
-
# this is the seam between the two registries (NOT a re-registration). Space::Src's
|
|
12
|
-
# top-level help/version interceptors call Kernel.exit, so we reproduce that
|
|
13
|
-
# interception here against the injected IO instead of delegating to them.
|
|
14
|
-
# dry-cli's internal exit on a bare group / unknown command propagates as
|
|
15
|
-
# SystemExit — same as the host's own bare groups (e.g. `space repo`) — and is
|
|
16
|
-
# intentionally NOT rescued (accepted behavior change).
|
|
17
|
-
def self.dispatch_src(rest, out = $stdout, err = $stderr)
|
|
18
|
-
if ::Space::Src::CLI::TOP_LEVEL_HELP.include?(rest)
|
|
19
|
-
out.puts Dry::CLI::Usage.call(::Space::Src::CLI::Registry.get([]))
|
|
20
|
-
return 0
|
|
21
|
-
end
|
|
22
|
-
if ::Space::Src::CLI::VERSION_REQUEST.include?(rest)
|
|
23
|
-
out.puts ::Space::Src::VERSION
|
|
24
|
-
return 0
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
if ::Space::Src::CLI.bare_query?(rest)
|
|
28
|
-
paths = ::Space::Src::CLI.make_paths
|
|
29
|
-
config = ::Space::Src::Config::Store.load(paths.config_file).success
|
|
30
|
-
return ::Space::Src::Nav.dispatch(rest[0], out, err, config.base_dir)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
Thread.current[:space_src_cli_outcome] = nil
|
|
34
|
-
Dry::CLI.new(::Space::Src::CLI::Registry).call(arguments: rest, out: out, err: err)
|
|
35
|
-
::Space::Src::CLI.last_outcome&.exit_code || 0
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "harness"
|
|
4
|
-
|
|
5
|
-
module Space::Architect
|
|
6
|
-
# Thin backward-compat wrapper around Harness::ClaudeCodeHarness.
|
|
7
|
-
# Existing callers that construct Dispatcher.new(...).run(...) continue to work byte-for-byte.
|
|
8
|
-
class Dispatcher
|
|
9
|
-
# Keep constants here so any code referencing Dispatcher::ALLOWED_TOOLS still works.
|
|
10
|
-
ALLOWED_TOOLS = Harness::ClaudeCodeHarness::ALLOWED_TOOLS
|
|
11
|
-
DISALLOWED_TOOLS = Harness::ClaudeCodeHarness::DISALLOWED_TOOLS
|
|
12
|
-
|
|
13
|
-
def initialize(model: "claude-sonnet-4-6", max_turns: 200, claude_bin: nil)
|
|
14
|
-
@harness = Harness::ClaudeCodeHarness.new(model: model, max_turns: max_turns, bin: claude_bin)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def run(prompt_path:, run_log_path:, chdir:)
|
|
18
|
-
@harness.run(prompt_path: prompt_path, run_log_path: run_log_path, chdir: chdir)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def run_detached(prompt_path:, run_log_path:, chdir:)
|
|
22
|
-
@harness.run_detached(prompt_path: prompt_path, run_log_path: run_log_path, chdir: chdir)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "fileutils"
|
|
4
|
-
|
|
5
|
-
module Space::Core
|
|
6
|
-
module AtomicWrite
|
|
7
|
-
module_function
|
|
8
|
-
|
|
9
|
-
def write(path, content)
|
|
10
|
-
path = path.to_s
|
|
11
|
-
dir = File.dirname(path)
|
|
12
|
-
FileUtils.mkdir_p(dir)
|
|
13
|
-
tmp_path = File.join(dir, ".#{File.basename(path)}.#{Process.pid}.tmp")
|
|
14
|
-
|
|
15
|
-
File.write(tmp_path, content)
|
|
16
|
-
File.rename(tmp_path, path)
|
|
17
|
-
ensure
|
|
18
|
-
FileUtils.rm_f(tmp_path) if defined?(tmp_path) && tmp_path && File.exist?(tmp_path)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "dry/cli"
|
|
4
|
-
|
|
5
|
-
module Space::Core::CLI
|
|
6
|
-
# Base for every space/architect command. dry-cli (>= 0.7.0) copies a
|
|
7
|
-
# superclass's options to its subclasses, so the global colour options are
|
|
8
|
-
# declared once here and inherited everywhere instead of being mixed in per
|
|
9
|
-
# command. Helpers (terminal/store/render) ride along by inheritance too.
|
|
10
|
-
#
|
|
11
|
-
# The `src` binary has its own output-mode system (--plain/--json) and does
|
|
12
|
-
# NOT inherit from this base.
|
|
13
|
-
class BaseCommand < Dry::CLI::Command
|
|
14
|
-
include Helpers
|
|
15
|
-
|
|
16
|
-
option :color, type: :string, default: "auto", desc: "Color output: auto, always, never"
|
|
17
|
-
option :colors, type: :string, desc: "Alias for --color"
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/space_core/cli/build.rb
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../oci_packer"
|
|
4
|
-
require_relative "../oci_builder"
|
|
5
|
-
|
|
6
|
-
module Space::Core::CLI
|
|
7
|
-
class Build < BaseCommand
|
|
8
|
-
desc "Build (and tag) the OCI image for the current space"
|
|
9
|
-
|
|
10
|
-
def call(**opts)
|
|
11
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
12
|
-
handle_errors do
|
|
13
|
-
result = store.current.bind do |space|
|
|
14
|
-
out_dir = space.path.join("build", "oci")
|
|
15
|
-
Space::Core::OciPacker.new(space: space, output_dir: out_dir).generate.bind do
|
|
16
|
-
Space::Core::OciBuilder.new(space: space, output_dir: out_dir).command
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
render(result) do |argv|
|
|
20
|
-
terminal.say "Building: #{argv.join(' ')}"
|
|
21
|
-
out.flush
|
|
22
|
-
Kernel.exec(*argv)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Space::Core::CLI
|
|
4
|
-
module Config
|
|
5
|
-
class Show < BaseCommand
|
|
6
|
-
desc "Show current config"
|
|
7
|
-
|
|
8
|
-
def call(**opts)
|
|
9
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
10
|
-
handle_errors do
|
|
11
|
-
rows = Space::Core::Config::EDITABLE_KEYS.map do |key|
|
|
12
|
-
value = project_config.data[key]
|
|
13
|
-
[key, value.nil? ? "" : value.to_s]
|
|
14
|
-
end
|
|
15
|
-
terminal.say terminal.table(%w[Key Value], rows)
|
|
16
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
class ConfigPath < BaseCommand
|
|
22
|
-
desc "Print the config file path"
|
|
23
|
-
|
|
24
|
-
def call(**opts)
|
|
25
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
26
|
-
handle_errors do
|
|
27
|
-
terminal.say terminal.path(project_config.path)
|
|
28
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
class Set < BaseCommand
|
|
34
|
-
desc "Set a config key"
|
|
35
|
-
argument :key, required: true, desc: "Config key"
|
|
36
|
-
argument :value, required: true, desc: "Config value"
|
|
37
|
-
|
|
38
|
-
def call(key:, value:, **opts)
|
|
39
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
40
|
-
handle_errors do
|
|
41
|
-
project_config.set(key, value)
|
|
42
|
-
stored = project_config.data[key]
|
|
43
|
-
terminal.success "Set #{key}=#{stored.nil? ? '' : stored.to_s}"
|
|
44
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Space::Core::CLI
|
|
4
|
-
class Current < BaseCommand
|
|
5
|
-
desc "Show the current space"
|
|
6
|
-
|
|
7
|
-
def call(**opts)
|
|
8
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
9
|
-
render(store.find) do |space|
|
|
10
|
-
terminal.say space.id.to_s
|
|
11
|
-
terminal.say terminal.path(space.path)
|
|
12
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|