@ideaspaces/cli 0.1.1 → 0.1.18

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.
Files changed (3) hide show
  1. package/README.md +87 -12
  2. package/bundle/ideaspaces.js +8219 -2590
  3. package/package.json +5 -3
package/README.md CHANGED
@@ -19,31 +19,66 @@ This installs the `ideaspaces` command. Node 20+ is required.
19
19
  ## Quick start
20
20
 
21
21
  ```sh
22
+ ideaspaces doctor # check Node, Git, and optional remote auth
22
23
  ideaspaces create my-space --yes # create the standard repository shape
23
24
  cd my-space
24
25
  ideaspaces navigate . # orient: what's here, what changed
26
+ ideaspaces inspect work/Next.md # deepen one document, summary first
25
27
  ideaspaces write decisions/idea.md --content "Idea body text"
26
28
  ideaspaces commit -m "Capture idea" decisions/idea.md
27
29
 
30
+ # Or take a public, copy-enabled Space home without an account or source history
31
+ ideaspaces fork https://ideaspaces.xyz/spaces/<root_node_id> ./my-fork
32
+
28
33
  # Optional: host or collaborate remotely
29
34
  ideaspaces login
30
- ideaspaces publish
35
+ ideaspaces publish # shows the plan; nothing changes yet
36
+ ideaspaces publish --yes # hosts it (private to your account)
31
37
  ideaspaces push
32
38
  ideaspaces pull
33
39
  ```
34
40
 
35
- Everything is local-first: your working copy is a real git repository on disk. Captures are yours until you choose to publish or push them.
41
+ Everything is local-first: your working copy is a real git repository on disk. Captures are yours
42
+ until you choose to publish or push them. Shared `create` mints a portable `root_node_id` into the
43
+ committed root foundation before login; private gitignored `_agent/` scaffolds remain unstamped.
44
+ First `publish` asks the server to adopt that exact committed identity. Declaration,
45
+ canonical-origin, or registry drift refuses before network mutation, and `publish --force` never
46
+ forks or rekeys a Space. `fork` is also local-first: it reads one bounded, copy-authorized snapshot,
47
+ validates it before touching the destination, and creates an unpublished one-commit Space with fresh
48
+ identity and no remote. Public View + Fork needs no account; signing in is required only when a
49
+ private source was shared directly or when the local fork is later published. `update` keeps that
50
+ relationship account-free while both public permissions remain enabled. It previews before apply,
51
+ validates the complete Markdown plus exact `_assets/` snapshot, and uses a three-way plan that
52
+ preserves local work and reports conflicts; directly shared private sources still use ambient auth.
53
+
54
+ `status` reports the local root-identity state and its HEAD/index/worktree declaration facts without
55
+ network access or mutation. `write` operates only inside that canonical Git worktree. It preserves
56
+ frontmatter fields you do not
57
+ set, replaces the Markdown atomically, and stages only the selected path. Use the returned `sha` as
58
+ `--if-match` for a safe refinement; `--force` is the explicit destructive override. `commit` snapshots
59
+ the worktree/index/HEAD revision of every selected path and commits exactly that reviewed set, leaving
60
+ bystander work untouched. Commit identity comes from Git's effective `user.name` / `user.email`
61
+ (preferably wired repo-locally by creation and platform commands) or explicit `--author-name` /
62
+ `--author-email` flags—never a hidden credential or network lookup. With `--json`, both commands return protocol `status`, phase, revision,
63
+ and typed failure facts; a partial write or commit exits non-zero.
36
64
 
37
65
  ## Commands
38
66
 
39
- Run `ideaspaces <command> --help` for full usage. `--json` is available on most read commands for scripting.
67
+ Run `ideaspaces <command> --help` for full usage. `--json` is available on reads and local capture effects for scripting.
68
+
69
+ ### Diagnostics
70
+ | Command | What it does |
71
+ |---|---|
72
+ | `doctor` | Check Node 20+, Git, and optional remote-auth readiness; use `--json` for stable machine output |
40
73
 
41
74
  ### Spaces & content
42
75
  | Command | What it does |
43
76
  |---|---|
44
- | `clone <namespace/slug> [dir]` | Clone a space into a local working copy |
45
- | `clones` | List your local working copies |
46
- | `create <name>` | Create a new space |
77
+ | `clone <space-url> [dir]` | Clone an authorized Space, preserve its declaration, and verify it against the canonical origin |
78
+ | `fork <space-url> [dir]` | Materialize an independent unpublished Space without source history or an account |
79
+ | `update [--yes]` | Preview or apply account-optional three-way source updates without displacing local work |
80
+ | `clones` | List hosted clones and unpublished local forks |
81
+ | `create <name>` | Create a local Space; shared scaffolds mint portable root identity before login |
47
82
  | `repos` | List spaces you can access |
48
83
  | `link <dir> <namespace/slug>` | Bind an existing local directory to a space |
49
84
 
@@ -58,29 +93,67 @@ Run `ideaspaces <command> --help` for full usage. `--json` is available on most
58
93
  ### Sync & publish
59
94
  | Command | What it does |
60
95
  |---|---|
96
+ | `sync` | Report where you, the Space, and a fork's recorded source stand — reads only, integrates nothing |
61
97
  | `push` | Send your committed captures to the remote |
62
- | `pull` | Integrate remote changes into your local copy |
63
- | `publish` | Publish a local space to the server |
98
+ | `pull` | Integrate changes from the fork's own Git remote |
99
+ | `publish` | Plan first; `--yes` publishes. Adopts the committed local identity on first publish; never silently rebinds or rekeys |
64
100
 
65
101
  ### Navigate & search
66
102
  | Command | What it does |
67
103
  |---|---|
68
104
  | `navigate <path>` | Orient at a position — contract, awareness, what changed |
69
- | `catalog` | List the nodes at a position |
105
+ | `map [<repo>]` | Derive a local repository Map; `--depth full` explicitly enumerates the complete Content tree |
106
+ | `inspect <path>` | Inspect one local Markdown file by summary, outline, or selected section |
107
+ | `catalog` | Join local checkouts with remote Spaces and their publication/sync state |
70
108
  | `ls [<path>]` | List files and folders under a path, typed (folder / repo / ideaspace) |
71
109
  | `search <query>` | Full-text search (filename + BM25) over the local clone |
72
- | `status` | Working-copy status (ahead / behind / dirty) |
110
+ | `status` | Working-copy and offline root-identity status, including uncommitted declaration drift |
73
111
  | `skills` | List the skill catalog, or print one skill's markdown |
74
112
 
113
+ `map` is local and network-free, and it does not require an `_agent/` contract. Numeric depths stay
114
+ bounded to 1–4; `--depth full` is deliberate enumeration rather than ambient orientation. JSON
115
+ members use the protocol's `name/summary/surface/children/full` vocabulary and can seed a map-note
116
+ without translating positions or rungs. Dirty or identity-less roots are labeled non-portable rather
117
+ than presented as an exact snapshot.
118
+
75
119
  ### Collaborate
76
120
  | Command | What it does |
77
121
  |---|---|
78
122
  | `conversation` | Start or continue a conversation (online or `--local`) |
79
123
  | `conversations` | List conversations |
80
- | `share` | Manage members, invites, and public links |
124
+ | `share` | Share a Space at a grade — explore, fork, or collaborate — and see who has it |
125
+ | `inbox` | Ask, read, and reply through direct exchanges about shared Content |
81
126
  | `agents` | List agents available to you |
82
127
  | `times` | Activity timeline |
83
128
 
129
+ Share addresses people and teams by names rather than internal ids:
130
+
131
+ ```bash
132
+ ideaspaces share person someone@example.com --grade explore
133
+ ideaspaces share person @someone --grade fork
134
+ ideaspaces share team acme.com --grade collaborate
135
+ ideaspaces share list
136
+ ideaspaces share remove team:acme.com
137
+ ideaspaces share visibility public # plan only — shows what opens up
138
+ ideaspaces share visibility public --yes # anyone can view and fork locally; publishing still requires sign-in
139
+ ideaspaces share visibility private # named access is unchanged; reducing exposure needs no flag
140
+
141
+ # Ask the owner of shared Content from a local agent or terminal
142
+ ideaspaces inbox send @owner --about n_0123456789abcdef01234567 \
143
+ --name "Question" --summary "One decision" --message "What should happen next?"
144
+ ideaspaces inbox list
145
+ ideaspaces inbox read x_example
146
+ printf '# Answer\n\nKeep it narrow.' | ideaspaces inbox reply x_example \
147
+ --name "Answer" --summary "A bounded answer"
148
+ ```
149
+
150
+ Inbox commands act as the logged-in person. Bare Agent credentials cannot read or write a person's
151
+ Inbox; plugins expose these person-accountable commands to a local agent after the person logs in.
152
+ Every exchange remains attached to the exact Content `node_id` it concerns.
153
+
154
+ Public visibility permits a bounded, history-free local Fork; it never makes Git history, clone, or
155
+ push public and never creates an anonymous hosted owner.
156
+
84
157
  ### Identity
85
158
  | Command | What it does |
86
159
  |---|---|
@@ -98,7 +171,9 @@ Run an agent over your local working copy — offline, on your own key.
98
171
  | `pi-login` | Configure a model provider (writes the local agent's credentials) |
99
172
  | `pi-logout` | Remove a configured model provider |
100
173
  | `pi-models` | List the models a configured provider offers |
101
- | `conversation send --local` | Run a local agent turn over a folder |
174
+ | `conversation send --local` | Run a local agent turn over a folder; add `--map <map-note.md>` to launch over its ordered territory without fetching its roots |
175
+
176
+ A local Map launch reads the provisional `map:` frontmatter from the selected Note, validates it through the protocol, and appends its roots, pins, ordered members, representation depths, and legend to Pi's launch orientation. Invalid Maps and orientations over 12,000 characters fail before Pi starts; omitting `--map` preserves the folder-only launch.
102
177
 
103
178
  ## Configuration
104
179