space-architect 1.3.0 → 2.0.0.rc2
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 +103 -0
- data/README.md +267 -158
- data/exe/architect +1 -1
- data/exe/space +2 -2
- data/exe/src +13 -0
- data/lib/space_architect/{architect_mission.rb → architect_project.rb} +475 -125
- data/lib/space_architect/cli/architect.rb +248 -178
- data/lib/space_architect/cli/research.rb +94 -0
- data/lib/space_architect/cli/space.rb +25 -31
- data/lib/space_architect/cli/src.rb +20 -14
- data/lib/space_architect/cli.rb +22 -22
- data/lib/space_architect/dispatcher.rb +5 -1
- data/lib/space_architect/gate_evaluator.rb +65 -0
- data/lib/space_architect/gate_lint.rb +140 -0
- data/lib/space_architect/harness.rb +145 -17
- data/lib/space_architect/research/mux.rb +127 -0
- data/lib/space_architect/research/registry.rb +70 -0
- data/lib/space_architect/research/renderer.rb +101 -0
- data/lib/space_architect/research/run.rb +7 -0
- data/lib/space_architect/research/supervisor.rb +108 -0
- data/lib/space_architect/research.rb +13 -0
- data/lib/space_architect/run_creator.rb +53 -0
- data/lib/space_architect/skill_installer.rb +81 -79
- data/lib/space_architect/templates/architect.md.erb +15 -4
- data/lib/space_architect/templates/brief.md.erb +5 -5
- data/lib/space_architect/templates/iteration.md.erb +17 -6
- data/lib/space_architect.rb +8 -21
- data/lib/{space_architect → space_core}/atomic_write.rb +1 -1
- data/lib/space_core/cli/base_command.rb +19 -0
- data/lib/space_core/cli/build.rb +27 -0
- data/lib/space_core/cli/config.rb +49 -0
- data/lib/space_core/cli/current.rb +16 -0
- data/lib/space_core/cli/help.rb +123 -0
- data/lib/space_core/cli/helpers.rb +115 -0
- data/lib/space_core/cli/init.rb +29 -0
- data/lib/space_core/cli/list.rb +24 -0
- data/lib/space_core/cli/new.rb +38 -0
- data/lib/space_core/cli/pack.rb +29 -0
- data/lib/space_core/cli/path.rb +16 -0
- data/lib/space_core/cli/repeatable_options.rb +75 -0
- data/lib/space_core/cli/repo.rb +76 -0
- data/lib/space_core/cli/run.rb +29 -0
- data/lib/space_core/cli/shell.rb +125 -0
- data/lib/space_core/cli/show.rb +21 -0
- data/lib/space_core/cli/status.rb +33 -0
- data/lib/space_core/cli/use.rb +17 -0
- data/lib/space_core/cli.rb +177 -0
- data/lib/{space_architect → space_core}/config.rb +1 -1
- data/lib/{space_architect → space_core}/errors.rb +1 -1
- data/lib/{space_architect → space_core}/git_client.rb +1 -1
- data/lib/{space_architect → space_core}/mise_client.rb +1 -1
- data/lib/space_core/oci_builder.rb +56 -0
- data/lib/space_core/oci_packer.rb +99 -0
- data/lib/space_core/oci_runner.rb +73 -0
- data/lib/{space_architect → space_core}/repo_reference.rb +1 -1
- data/lib/{space_architect → space_core}/repo_resolver.rb +1 -1
- data/lib/{space_architect → space_core}/shell_integration.rb +1 -1
- data/lib/{space_architect → space_core}/slugger.rb +1 -1
- data/lib/{space_architect → space_core}/space.rb +11 -3
- data/lib/{space_architect → space_core}/space_store.rb +13 -13
- data/lib/{space_architect → space_core}/state.rb +1 -1
- data/lib/space_core/templates/oci/dockerfile.erb +63 -0
- data/lib/space_core/templates/oci/dockerignore.erb +17 -0
- data/lib/space_core/templates/oci/entrypoint.sh.erb +10 -0
- data/lib/{space_architect → space_core}/terminal.rb +1 -1
- data/lib/space_core/version.rb +7 -0
- data/lib/{space_architect → space_core}/warnings.rb +1 -1
- data/lib/{space_architect → space_core}/xdg.rb +1 -1
- data/lib/space_core.rb +24 -0
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/clone.rb +5 -5
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/config.rb +7 -7
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/daemon.rb +46 -30
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/options.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/org.rb +9 -9
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/repo.rb +9 -9
- data/lib/space_src/cli/shell.rb +122 -0
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/status.rb +7 -7
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli/sync.rb +17 -17
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cli.rb +42 -11
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/cloner.rb +3 -3
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/config/contract.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/config/duration.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/config/model.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/config/store.rb +5 -5
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/forge/client.rb +2 -2
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/forge/github.rb +4 -4
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/launchd/agent.rb +5 -5
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/launchd/plist.rb +3 -3
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/log_rotator.rb +1 -1
- data/lib/space_src/migration.rb +43 -0
- data/lib/space_src/nav.rb +98 -0
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/paths.rb +2 -2
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/scm/client.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/scm/git.rb +4 -4
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/scm/status.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/shell.rb +1 -1
- data/lib/space_src/shell_integration.rb +321 -0
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/state/lock.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/state/store.rb +2 -2
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/sync/engine.rb +12 -12
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/sync/repo_plan.rb +3 -3
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/ui/interactive_reporter.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/ui/json_reporter.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/ui/mode.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/ui/plain_reporter.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/ui/reporter.rb +1 -1
- data/{vendor/repo-tender/lib/space_architect/pristine → lib/space_src}/version.rb +2 -2
- data/lib/space_src.rb +37 -0
- data/skill/architect/SKILL.md +110 -54
- data/skill/architect/dispatch.md +147 -39
- data/skill/architect/research.md +46 -37
- data/skill/architect-research/SKILL.md +2 -2
- data/skill/architect-vocabulary/SKILL.md +24 -21
- metadata +127 -68
- data/lib/space_architect/cli/config.rb +0 -61
- data/lib/space_architect/cli/current.rb +0 -22
- data/lib/space_architect/cli/helpers.rb +0 -117
- data/lib/space_architect/cli/init.rb +0 -35
- data/lib/space_architect/cli/list.rb +0 -30
- data/lib/space_architect/cli/new.rb +0 -43
- data/lib/space_architect/cli/options.rb +0 -12
- data/lib/space_architect/cli/path.rb +0 -22
- data/lib/space_architect/cli/repo.rb +0 -88
- data/lib/space_architect/cli/shell.rb +0 -137
- data/lib/space_architect/cli/show.rb +0 -27
- data/lib/space_architect/cli/status.rb +0 -39
- data/lib/space_architect/cli/use.rb +0 -23
- data/lib/space_architect/version.rb +0 -5
- data/vendor/repo-tender/lib/space_architect/pristine.rb +0 -44
data/skill/architect/research.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# Research fan-out reference
|
|
2
2
|
|
|
3
|
-
Read this only when a research trigger fires (see SKILL.md step 3). The
|
|
4
|
-
|
|
5
|
-
read-only
|
|
6
|
-
|
|
7
|
-
the iteration's **Grounds** section itself.
|
|
3
|
+
Read this only when a research trigger fires (see SKILL.md step 3). The fan-out
|
|
4
|
+
uses `architect research dispatch` to launch parallel read-only `claude -p`
|
|
5
|
+
researchers (a cheaper model, read-only — no Edit/Write/Bash) and `architect research wait` to
|
|
6
|
+
collect their results. The architect keeps all judgment: it verifies
|
|
7
|
+
load-bearing claims and writes the iteration's **Grounds** section itself.
|
|
8
|
+
|
|
9
|
+
**Note:** the `~/.claude/skills/architect-research/` copy of this skill is
|
|
10
|
+
synced separately and is NOT updated by this repo.
|
|
8
11
|
|
|
9
12
|
## Fan out
|
|
10
13
|
|
|
@@ -13,41 +16,42 @@ Cover different angles, not the same angle five times — typical split:
|
|
|
13
16
|
official docs/reference, changelog/breaking changes, community failure reports,
|
|
14
17
|
alternatives/comparisons, security/operational constraints.
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
tool call** (`run_in_background`) — one call per researcher, not a shell `&`
|
|
18
|
-
loop (a `&` launcher orphans the researchers and the harness reaps them all at
|
|
19
|
-
once; same trap as builder dispatch). The researcher toolset is read-only
|
|
20
|
-
(`Read,Grep,Glob`) plus the web tools (`WebSearch,WebFetch`) — no
|
|
21
|
-
`Edit`/`Write`/`Bash`, so it cannot touch the repo. Capture the final report
|
|
22
|
-
by redirecting stdout (the report *is* the text result in the default `text`
|
|
23
|
-
output format):
|
|
19
|
+
Write each research prompt to its own file, then dispatch and wait:
|
|
24
20
|
|
|
25
21
|
```bash
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
# 1. Write one prompt file per research question (use Write tool — do NOT shell-redirect)
|
|
23
|
+
# Filenames: <NN>-<topic>.prompt.md e.g. 01-official-api.prompt.md
|
|
24
|
+
|
|
25
|
+
# 2. Dispatch all lanes at once (non-blocking — returns PIDs immediately)
|
|
26
|
+
architect research dispatch \
|
|
27
|
+
01-official-api.prompt.md \
|
|
28
|
+
02-changelog.prompt.md
|
|
29
|
+
|
|
30
|
+
# 3. Wait for all lanes to complete (tails run.jsonl streams; exits non-zero if any lane fails)
|
|
31
|
+
architect research wait
|
|
32
|
+
|
|
33
|
+
# 4. Read each report
|
|
34
|
+
cat build/research/01-official-api/report.md
|
|
35
|
+
cat build/research/02-changelog/report.md
|
|
31
36
|
```
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
its report. Bisect and re-dispatch dead lanes; don't re-run as-is.
|
|
38
|
+
The id for each lane is derived from the prompt filename:
|
|
39
|
+
`01-official-api.prompt.md` → id `01-official-api` →
|
|
40
|
+
directory `build/research/01-official-api/`.
|
|
41
|
+
|
|
42
|
+
Verbosity flags for `wait`:
|
|
43
|
+
- default (L1): per-lane lifecycle + terminal outcome line
|
|
44
|
+
- `--level 2`: + assistant text
|
|
45
|
+
- `--level 3`: + tool call names
|
|
46
|
+
- `--level 4`: + tool call inputs and results
|
|
47
|
+
- `--quiet`: suppress all output; exit status alone signals outcome
|
|
48
|
+
- `--thinking`: reveal assistant thinking blocks
|
|
49
|
+
- `--jsonl`: emit raw lane-tagged JSONL instead of human text
|
|
50
|
+
|
|
51
|
+
The researchers are READ-ONLY by toolset (`Read,Grep,Glob,WebSearch,WebFetch`
|
|
52
|
+
with no Edit/Write/Bash) so they cannot touch the repo. Their final report
|
|
53
|
+
is extracted from the terminal `result` event in the stream-json log and
|
|
54
|
+
written to `build/research/<id>/report.md` automatically by `wait`.
|
|
51
55
|
|
|
52
56
|
## Research-prompt template
|
|
53
57
|
|
|
@@ -70,9 +74,14 @@ OUTPUT FORMAT — a markdown report:
|
|
|
70
74
|
- End with: the 2-3 findings most likely to change an implementation decision.
|
|
71
75
|
```
|
|
72
76
|
|
|
77
|
+
Keep each researcher scoped to ≤5 subjects and put hard context rules in the
|
|
78
|
+
prompt (snippet over page; quote ≤2 sentences; stop the moment you can answer)
|
|
79
|
+
— a researcher that fills its context window dies without emitting its report.
|
|
80
|
+
Bisect and re-dispatch dead lanes; don't re-run as-is.
|
|
81
|
+
|
|
73
82
|
## Gather (architect — this is your work, not another agent's)
|
|
74
83
|
|
|
75
|
-
1. Read every
|
|
84
|
+
1. Read every `build/research/<id>/report.md`.
|
|
76
85
|
2. Identify the **load-bearing claims** — facts the spec will depend on
|
|
77
86
|
(an API shape, a version constraint, a limit, a deprecation). Adversarially
|
|
78
87
|
verify each: cross-check against a second independent source or the live
|
|
@@ -74,7 +74,7 @@ toolset (`Read,Grep,Glob`) plus the web tools (`WebSearch,WebFetch`); the
|
|
|
74
74
|
report is the redirected stdout:
|
|
75
75
|
|
|
76
76
|
```bash
|
|
77
|
-
claude -p --model
|
|
77
|
+
claude -p --model <researcher-model> \
|
|
78
78
|
--allowedTools 'Read,Grep,Glob,WebSearch,WebFetch' \
|
|
79
79
|
--max-turns 40 \
|
|
80
80
|
< build/research/<NN>-<lane>.prompt.md \
|
|
@@ -161,5 +161,5 @@ Commit the report. Raw findings stay in `build/research/` (gitignored).
|
|
|
161
161
|
|
|
162
162
|
If this feeds the build loop: distill the report into the iteration's **Grounds**
|
|
163
163
|
section (`architecture/I<NN>-<name>.md`) per `/architect`, or into
|
|
164
|
-
`architecture/BRIEF.md` §sections when it is
|
|
164
|
+
`architecture/BRIEF.md` §sections when it is project-scope, and continue there.
|
|
165
165
|
The builder's PHASE 0 will challenge Grounds' claims — that's a feature.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: architect-vocabulary
|
|
3
3
|
description: >
|
|
4
4
|
Load the Architect system's vocabulary and a short "where you are"
|
|
5
|
-
orientation — space,
|
|
5
|
+
orientation — space, project, iteration, lane, brief, builder, architect,
|
|
6
6
|
gate, freeze, verdict, research, variant set — for when you're standing in a
|
|
7
7
|
space-architect workspace (or working on the skill itself) and need the terms
|
|
8
8
|
understood in conversation but do NOT want to run the loop. Reference only:
|
|
@@ -30,11 +30,12 @@ the loop.
|
|
|
30
30
|
|
|
31
31
|
**Roles**
|
|
32
32
|
|
|
33
|
-
- **architect** — the judgment role (a
|
|
34
|
-
mode): arbitrates disagreements, writes and freezes iteration files,
|
|
35
|
-
kill/continue, merges builder output. Never writes implementation code.
|
|
36
|
-
- **builder** — the implementation role:
|
|
37
|
-
`architect dispatch` (`claude -p`), one per lane in its own
|
|
33
|
+
- **architect** — the judgment role (a strong reasoning model, or a human, in
|
|
34
|
+
judgment mode): arbitrates disagreements, writes and freezes iteration files,
|
|
35
|
+
calls kill/continue, merges builder output. Never writes implementation code.
|
|
36
|
+
- **builder** — the implementation role: a cheaper model run headless via
|
|
37
|
+
`architect dispatch` (reference harness: `claude -p`), one per lane in its own
|
|
38
|
+
worktree. Reports
|
|
38
39
|
raw evidence; never grades its own work; never edits `architecture/`.
|
|
39
40
|
|
|
40
41
|
**The workspace**
|
|
@@ -43,9 +44,9 @@ the loop.
|
|
|
43
44
|
artifacts under one root. `architect` finds it by walking up from `$PWD` to the
|
|
44
45
|
nearest `space.yaml`.
|
|
45
46
|
- **space.yaml** — the space's identity file: id, title, status, repos, notes,
|
|
46
|
-
tags, plus the `
|
|
47
|
+
tags, plus the `project:` block (project state — iterations, freeze shas,
|
|
47
48
|
lanes).
|
|
48
|
-
- **
|
|
49
|
+
- **project** — an Architect Loop instance living inside a space; spans the
|
|
49
50
|
repos under `repos/`.
|
|
50
51
|
|
|
51
52
|
**The unit of work**
|
|
@@ -54,8 +55,9 @@ the loop.
|
|
|
54
55
|
file `architecture/I<NN>-<name>.md`, grown section by section. Its sections:
|
|
55
56
|
- **Grounds** — *why*: research/brief distilled (optional).
|
|
56
57
|
- **Specification** — *what/how*: the full delegation contract.
|
|
57
|
-
- **Acceptance Criteria** — *proof*:
|
|
58
|
-
|
|
58
|
+
- **Acceptance Criteria** — *proof*: prose conditions (AC1, AC2, …) the
|
|
59
|
+
architect judges against, plus a fenced ` ```gates ` block of runnable checks;
|
|
60
|
+
this is what gets frozen.
|
|
59
61
|
- **Builder Prompt** — the exact lane-prompt(s) dispatched.
|
|
60
62
|
- **Builder Report** — raw evidence, transcribed verbatim from build scratch.
|
|
61
63
|
- **Verdict** — rulings + per-AC PASS/FAIL/INVALID + KILL/CONTINUE.
|
|
@@ -70,17 +72,18 @@ the loop.
|
|
|
70
72
|
|
|
71
73
|
**Contracts and checkpoints**
|
|
72
74
|
|
|
73
|
-
- **brief** (`architecture/BRIEF.md`) — the durable, §-numbered
|
|
74
|
-
that spans iterations; frozen at the
|
|
75
|
+
- **brief** (`architecture/BRIEF.md`) — the durable, §-numbered project contract
|
|
76
|
+
that spans iterations; frozen at the project level and cited as **BRIEF §N**.
|
|
75
77
|
- **ARCHITECT.md** (`architecture/ARCHITECT.md`) — the cross-iteration index /
|
|
76
|
-
table of contents and
|
|
78
|
+
table of contents and project-wide state.
|
|
77
79
|
- **freeze** ❄️ — committing the frozen region (Grounds / Specification /
|
|
78
80
|
Acceptance Criteria) *before* dispatch (`architect freeze`). Records the
|
|
79
81
|
**freeze_sha** in `space.yaml`; any later change to those sections is an
|
|
80
82
|
automatic iteration FAIL.
|
|
81
|
-
- **gate** — a
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
- **gate** — a structured entry in the ` ```gates ` block: `id`, `ac`, `cmd`,
|
|
84
|
+
optional `cwd`, and an `expect` hash (exit_code / stdout_match / threshold).
|
|
85
|
+
`architect gate` runs each gate's `cmd` and streams raw output — it is a runner,
|
|
86
|
+
never a judge. `architect freeze` lints the gates block before committing.
|
|
84
87
|
|
|
85
88
|
**Outcomes**
|
|
86
89
|
|
|
@@ -106,18 +109,18 @@ the loop.
|
|
|
106
109
|
**Repos**
|
|
107
110
|
|
|
108
111
|
- **evergreen** / copy-on-write / **`src` engine** — repo provisioning: when an
|
|
109
|
-
up-to-date local copy exists under `
|
|
112
|
+
up-to-date local copy exists under `src_dir`, `architect` copies it into
|
|
110
113
|
the space (copy-on-write on APFS) instead of cloning over the network. The
|
|
111
|
-
|
|
114
|
+
`src` engine (`space-src`) keeps those evergreen checkouts tended.
|
|
112
115
|
|
|
113
116
|
## Where you are
|
|
114
117
|
|
|
115
118
|
A space's directory layout:
|
|
116
119
|
|
|
117
120
|
```text
|
|
118
|
-
space.yaml # identity +
|
|
121
|
+
space.yaml # identity + project state (the project: block)
|
|
119
122
|
README.md
|
|
120
|
-
repos/ # the repos the
|
|
123
|
+
repos/ # the repos the project spans
|
|
121
124
|
notes/ # scratch, prompts, logs
|
|
122
125
|
architecture/ # ARCHITECT.md index + I<NN>-<name>.md iteration files (+ BRIEF.md)
|
|
123
126
|
build/ # lane worktrees + scratch: build/<id>-<lane>/
|
|
@@ -127,7 +130,7 @@ tmp/ # workspace-local temp — use instead of /tmp
|
|
|
127
130
|
Safe **read-only** commands to orient yourself (these don't run the loop):
|
|
128
131
|
|
|
129
132
|
```sh
|
|
130
|
-
architect status #
|
|
133
|
+
architect status # project state: iterations, freeze shas, lanes, verdicts
|
|
131
134
|
architect space show # the space you're standing in
|
|
132
135
|
architect space list # all your spaces
|
|
133
136
|
```
|
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: 2.0.0.rc2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eric Jacobs
|
|
@@ -37,6 +37,34 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '1.4'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: async-http
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0.95'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0.95'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: protocol-http
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0.62'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0.62'
|
|
40
68
|
- !ruby/object:Gem::Dependency
|
|
41
69
|
name: pastel
|
|
42
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -193,107 +221,138 @@ dependencies:
|
|
|
193
221
|
version: '13.0'
|
|
194
222
|
description: 'A dry-cli CLI for spaces: date-prefixed directories with a YAML identity
|
|
195
223
|
file, $PWD-based current-space resolution, and XDG config/state. Provisions repos
|
|
196
|
-
at copy-on-write speed from evergreen checkouts
|
|
197
|
-
|
|
224
|
+
at copy-on-write speed from evergreen checkouts, concurrently on fibers. Ships fish
|
|
225
|
+
shell integration and completions.'
|
|
198
226
|
email:
|
|
199
227
|
- eric@ebj.dev
|
|
200
228
|
executables:
|
|
201
229
|
- architect
|
|
202
230
|
- space
|
|
231
|
+
- src
|
|
203
232
|
extensions: []
|
|
204
233
|
extra_rdoc_files: []
|
|
205
234
|
files:
|
|
235
|
+
- CHANGELOG.md
|
|
206
236
|
- LICENSE.txt
|
|
207
237
|
- README.md
|
|
208
238
|
- exe/architect
|
|
209
239
|
- exe/space
|
|
240
|
+
- exe/src
|
|
210
241
|
- lib/space_architect.rb
|
|
211
|
-
- lib/space_architect/
|
|
212
|
-
- lib/space_architect/atomic_write.rb
|
|
242
|
+
- lib/space_architect/architect_project.rb
|
|
213
243
|
- lib/space_architect/cli.rb
|
|
214
244
|
- lib/space_architect/cli/architect.rb
|
|
215
|
-
- lib/space_architect/cli/
|
|
216
|
-
- lib/space_architect/cli/current.rb
|
|
217
|
-
- lib/space_architect/cli/helpers.rb
|
|
218
|
-
- lib/space_architect/cli/init.rb
|
|
219
|
-
- lib/space_architect/cli/list.rb
|
|
220
|
-
- lib/space_architect/cli/new.rb
|
|
221
|
-
- lib/space_architect/cli/options.rb
|
|
222
|
-
- lib/space_architect/cli/path.rb
|
|
223
|
-
- lib/space_architect/cli/repo.rb
|
|
224
|
-
- lib/space_architect/cli/shell.rb
|
|
225
|
-
- lib/space_architect/cli/show.rb
|
|
245
|
+
- lib/space_architect/cli/research.rb
|
|
226
246
|
- lib/space_architect/cli/space.rb
|
|
227
247
|
- lib/space_architect/cli/src.rb
|
|
228
|
-
- lib/space_architect/cli/status.rb
|
|
229
|
-
- lib/space_architect/cli/use.rb
|
|
230
|
-
- lib/space_architect/config.rb
|
|
231
248
|
- lib/space_architect/dispatcher.rb
|
|
232
|
-
- lib/space_architect/
|
|
233
|
-
- lib/space_architect/
|
|
249
|
+
- lib/space_architect/gate_evaluator.rb
|
|
250
|
+
- lib/space_architect/gate_lint.rb
|
|
234
251
|
- lib/space_architect/harness.rb
|
|
235
|
-
- lib/space_architect/
|
|
236
|
-
- lib/space_architect/
|
|
237
|
-
- lib/space_architect/
|
|
238
|
-
- lib/space_architect/
|
|
252
|
+
- lib/space_architect/research.rb
|
|
253
|
+
- lib/space_architect/research/mux.rb
|
|
254
|
+
- lib/space_architect/research/registry.rb
|
|
255
|
+
- lib/space_architect/research/renderer.rb
|
|
256
|
+
- lib/space_architect/research/run.rb
|
|
257
|
+
- lib/space_architect/research/supervisor.rb
|
|
258
|
+
- lib/space_architect/run_creator.rb
|
|
239
259
|
- lib/space_architect/skill_installer.rb
|
|
240
|
-
- lib/space_architect/slugger.rb
|
|
241
|
-
- lib/space_architect/space.rb
|
|
242
|
-
- lib/space_architect/space_store.rb
|
|
243
|
-
- lib/space_architect/state.rb
|
|
244
260
|
- lib/space_architect/templates/architect.md.erb
|
|
245
261
|
- lib/space_architect/templates/brief.md.erb
|
|
246
262
|
- lib/space_architect/templates/iteration.md.erb
|
|
247
|
-
- lib/
|
|
248
|
-
- lib/
|
|
249
|
-
- lib/
|
|
250
|
-
- lib/
|
|
263
|
+
- lib/space_core.rb
|
|
264
|
+
- lib/space_core/atomic_write.rb
|
|
265
|
+
- lib/space_core/cli.rb
|
|
266
|
+
- lib/space_core/cli/base_command.rb
|
|
267
|
+
- lib/space_core/cli/build.rb
|
|
268
|
+
- lib/space_core/cli/config.rb
|
|
269
|
+
- lib/space_core/cli/current.rb
|
|
270
|
+
- lib/space_core/cli/help.rb
|
|
271
|
+
- lib/space_core/cli/helpers.rb
|
|
272
|
+
- lib/space_core/cli/init.rb
|
|
273
|
+
- lib/space_core/cli/list.rb
|
|
274
|
+
- lib/space_core/cli/new.rb
|
|
275
|
+
- lib/space_core/cli/pack.rb
|
|
276
|
+
- lib/space_core/cli/path.rb
|
|
277
|
+
- lib/space_core/cli/repeatable_options.rb
|
|
278
|
+
- lib/space_core/cli/repo.rb
|
|
279
|
+
- lib/space_core/cli/run.rb
|
|
280
|
+
- lib/space_core/cli/shell.rb
|
|
281
|
+
- lib/space_core/cli/show.rb
|
|
282
|
+
- lib/space_core/cli/status.rb
|
|
283
|
+
- lib/space_core/cli/use.rb
|
|
284
|
+
- lib/space_core/config.rb
|
|
285
|
+
- lib/space_core/errors.rb
|
|
286
|
+
- lib/space_core/git_client.rb
|
|
287
|
+
- lib/space_core/mise_client.rb
|
|
288
|
+
- lib/space_core/oci_builder.rb
|
|
289
|
+
- lib/space_core/oci_packer.rb
|
|
290
|
+
- lib/space_core/oci_runner.rb
|
|
291
|
+
- lib/space_core/repo_reference.rb
|
|
292
|
+
- lib/space_core/repo_resolver.rb
|
|
293
|
+
- lib/space_core/shell_integration.rb
|
|
294
|
+
- lib/space_core/slugger.rb
|
|
295
|
+
- lib/space_core/space.rb
|
|
296
|
+
- lib/space_core/space_store.rb
|
|
297
|
+
- lib/space_core/state.rb
|
|
298
|
+
- lib/space_core/templates/oci/dockerfile.erb
|
|
299
|
+
- lib/space_core/templates/oci/dockerignore.erb
|
|
300
|
+
- lib/space_core/templates/oci/entrypoint.sh.erb
|
|
301
|
+
- lib/space_core/terminal.rb
|
|
302
|
+
- lib/space_core/version.rb
|
|
303
|
+
- lib/space_core/warnings.rb
|
|
304
|
+
- lib/space_core/xdg.rb
|
|
305
|
+
- lib/space_src.rb
|
|
306
|
+
- lib/space_src/cli.rb
|
|
307
|
+
- lib/space_src/cli/clone.rb
|
|
308
|
+
- lib/space_src/cli/config.rb
|
|
309
|
+
- lib/space_src/cli/daemon.rb
|
|
310
|
+
- lib/space_src/cli/options.rb
|
|
311
|
+
- lib/space_src/cli/org.rb
|
|
312
|
+
- lib/space_src/cli/repo.rb
|
|
313
|
+
- lib/space_src/cli/shell.rb
|
|
314
|
+
- lib/space_src/cli/status.rb
|
|
315
|
+
- lib/space_src/cli/sync.rb
|
|
316
|
+
- lib/space_src/cloner.rb
|
|
317
|
+
- lib/space_src/config/contract.rb
|
|
318
|
+
- lib/space_src/config/duration.rb
|
|
319
|
+
- lib/space_src/config/model.rb
|
|
320
|
+
- lib/space_src/config/store.rb
|
|
321
|
+
- lib/space_src/forge/client.rb
|
|
322
|
+
- lib/space_src/forge/github.rb
|
|
323
|
+
- lib/space_src/launchd/agent.rb
|
|
324
|
+
- lib/space_src/launchd/plist.rb
|
|
325
|
+
- lib/space_src/log_rotator.rb
|
|
326
|
+
- lib/space_src/migration.rb
|
|
327
|
+
- lib/space_src/nav.rb
|
|
328
|
+
- lib/space_src/paths.rb
|
|
329
|
+
- lib/space_src/scm/client.rb
|
|
330
|
+
- lib/space_src/scm/git.rb
|
|
331
|
+
- lib/space_src/scm/status.rb
|
|
332
|
+
- lib/space_src/shell.rb
|
|
333
|
+
- lib/space_src/shell_integration.rb
|
|
334
|
+
- lib/space_src/state/lock.rb
|
|
335
|
+
- lib/space_src/state/store.rb
|
|
336
|
+
- lib/space_src/sync/engine.rb
|
|
337
|
+
- lib/space_src/sync/repo_plan.rb
|
|
338
|
+
- lib/space_src/ui/interactive_reporter.rb
|
|
339
|
+
- lib/space_src/ui/json_reporter.rb
|
|
340
|
+
- lib/space_src/ui/mode.rb
|
|
341
|
+
- lib/space_src/ui/plain_reporter.rb
|
|
342
|
+
- lib/space_src/ui/reporter.rb
|
|
343
|
+
- lib/space_src/version.rb
|
|
251
344
|
- skill/architect-research/SKILL.md
|
|
252
345
|
- skill/architect-research/lanes.md
|
|
253
346
|
- skill/architect-vocabulary/SKILL.md
|
|
254
347
|
- skill/architect/SKILL.md
|
|
255
348
|
- skill/architect/dispatch.md
|
|
256
349
|
- skill/architect/research.md
|
|
257
|
-
- vendor/repo-tender/lib/space_architect/pristine.rb
|
|
258
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli.rb
|
|
259
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/clone.rb
|
|
260
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/config.rb
|
|
261
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/daemon.rb
|
|
262
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/options.rb
|
|
263
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/org.rb
|
|
264
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/repo.rb
|
|
265
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/status.rb
|
|
266
|
-
- vendor/repo-tender/lib/space_architect/pristine/cli/sync.rb
|
|
267
|
-
- vendor/repo-tender/lib/space_architect/pristine/cloner.rb
|
|
268
|
-
- vendor/repo-tender/lib/space_architect/pristine/config/contract.rb
|
|
269
|
-
- vendor/repo-tender/lib/space_architect/pristine/config/duration.rb
|
|
270
|
-
- vendor/repo-tender/lib/space_architect/pristine/config/model.rb
|
|
271
|
-
- vendor/repo-tender/lib/space_architect/pristine/config/store.rb
|
|
272
|
-
- vendor/repo-tender/lib/space_architect/pristine/forge/client.rb
|
|
273
|
-
- vendor/repo-tender/lib/space_architect/pristine/forge/github.rb
|
|
274
|
-
- vendor/repo-tender/lib/space_architect/pristine/launchd/agent.rb
|
|
275
|
-
- vendor/repo-tender/lib/space_architect/pristine/launchd/plist.rb
|
|
276
|
-
- vendor/repo-tender/lib/space_architect/pristine/log_rotator.rb
|
|
277
|
-
- vendor/repo-tender/lib/space_architect/pristine/paths.rb
|
|
278
|
-
- vendor/repo-tender/lib/space_architect/pristine/scm/client.rb
|
|
279
|
-
- vendor/repo-tender/lib/space_architect/pristine/scm/git.rb
|
|
280
|
-
- vendor/repo-tender/lib/space_architect/pristine/scm/status.rb
|
|
281
|
-
- vendor/repo-tender/lib/space_architect/pristine/shell.rb
|
|
282
|
-
- vendor/repo-tender/lib/space_architect/pristine/state/lock.rb
|
|
283
|
-
- vendor/repo-tender/lib/space_architect/pristine/state/store.rb
|
|
284
|
-
- vendor/repo-tender/lib/space_architect/pristine/sync/engine.rb
|
|
285
|
-
- vendor/repo-tender/lib/space_architect/pristine/sync/repo_plan.rb
|
|
286
|
-
- vendor/repo-tender/lib/space_architect/pristine/ui/interactive_reporter.rb
|
|
287
|
-
- vendor/repo-tender/lib/space_architect/pristine/ui/json_reporter.rb
|
|
288
|
-
- vendor/repo-tender/lib/space_architect/pristine/ui/mode.rb
|
|
289
|
-
- vendor/repo-tender/lib/space_architect/pristine/ui/plain_reporter.rb
|
|
290
|
-
- vendor/repo-tender/lib/space_architect/pristine/ui/reporter.rb
|
|
291
|
-
- vendor/repo-tender/lib/space_architect/pristine/version.rb
|
|
292
350
|
homepage: https://github.com/jetpks/space-architect
|
|
293
351
|
licenses:
|
|
294
352
|
- MIT
|
|
295
353
|
metadata:
|
|
296
354
|
homepage_uri: https://github.com/jetpks/space-architect
|
|
355
|
+
changelog_uri: https://github.com/jetpks/space-architect/blob/main/CHANGELOG.md
|
|
297
356
|
rdoc_options: []
|
|
298
357
|
require_paths:
|
|
299
358
|
- lib
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SpaceArchitect
|
|
4
|
-
module CLI
|
|
5
|
-
module Config
|
|
6
|
-
class Show < Dry::CLI::Command
|
|
7
|
-
include GlobalOptions
|
|
8
|
-
include Helpers
|
|
9
|
-
|
|
10
|
-
desc "Show current config"
|
|
11
|
-
|
|
12
|
-
def call(**opts)
|
|
13
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
14
|
-
handle_errors do
|
|
15
|
-
rows = SpaceArchitect::Config::EDITABLE_KEYS.map do |key|
|
|
16
|
-
value = project_config.data[key]
|
|
17
|
-
[key, value.nil? ? "" : value.to_s]
|
|
18
|
-
end
|
|
19
|
-
terminal.say terminal.table(%w[Key Value], rows)
|
|
20
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
class ConfigPath < Dry::CLI::Command
|
|
26
|
-
include GlobalOptions
|
|
27
|
-
include Helpers
|
|
28
|
-
|
|
29
|
-
desc "Print the config file path"
|
|
30
|
-
|
|
31
|
-
def call(**opts)
|
|
32
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
33
|
-
handle_errors do
|
|
34
|
-
terminal.say terminal.path(project_config.path)
|
|
35
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class Set < Dry::CLI::Command
|
|
41
|
-
include GlobalOptions
|
|
42
|
-
include Helpers
|
|
43
|
-
|
|
44
|
-
desc "Set a config key"
|
|
45
|
-
argument :key, required: true, desc: "Config key"
|
|
46
|
-
argument :value, required: true, desc: "Config value"
|
|
47
|
-
|
|
48
|
-
def call(key:, value:, **opts)
|
|
49
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
50
|
-
handle_errors do
|
|
51
|
-
project_config.set(key, value)
|
|
52
|
-
stored = project_config.data[key]
|
|
53
|
-
terminal.success "Set #{key}=#{stored.nil? ? '' : stored.to_s}"
|
|
54
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module SpaceArchitect
|
|
4
|
-
module CLI
|
|
5
|
-
class Current < Dry::CLI::Command
|
|
6
|
-
include GlobalOptions
|
|
7
|
-
include Helpers
|
|
8
|
-
|
|
9
|
-
desc "Show the current space"
|
|
10
|
-
|
|
11
|
-
def call(**opts)
|
|
12
|
-
setup_terminal(**opts.slice(:color, :colors))
|
|
13
|
-
render(store.find) do |space|
|
|
14
|
-
terminal.say space.id.to_s
|
|
15
|
-
terminal.say terminal.path(space.path)
|
|
16
|
-
CLI.record_outcome(Outcome.new(exit_code: 0))
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|