@kitsy/coop 1.0.0 → 2.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.
package/README.md CHANGED
@@ -2,9 +2,28 @@
2
2
 
3
3
  CLI package for COOP.
4
4
 
5
+ Install globally:
6
+
7
+ ```bash
8
+ npm i -g @kitsy/coop
9
+ coop --help
10
+ ```
11
+
12
+ Install locally in a repo:
13
+
14
+ ```bash
15
+ pnpm add -D @kitsy/coop
16
+ pnpm exec coop --help
17
+ ```
18
+
19
+ Both entrypoints operate on the nearest parent `.coop/` workspace. If no workspace log target exists, CLI errors fall back to `~/.coop/logs/cli.log` or `COOP_HOME/logs/cli.log`.
20
+
21
+ COOP v2 stores project data under `.coop/projects/<project.id>/...` and keeps workspace selection in `.coop/config.yml`.
22
+
5
23
  Current implemented command families:
6
24
  - `coop`
7
- - `coop init`
25
+ - `coop init [--name <name>] [--id <id>] [--aliases <csv>] [--yes]`
26
+ - `coop project list|create|use|show`
8
27
  - `coop create task ...`
9
28
  - `coop create task --from <idea> --ai`
10
29
  - `coop create idea ...`
@@ -29,6 +48,7 @@ Current implemented command families:
29
48
  - `coop serve [--host <host>] [--port <port>] [--repo <path>]`
30
49
  - `coop webhook github [--host <host>] [--port <port>] [--repo <path>]`
31
50
  - `coop migrate --dry-run --to 2`
51
+ - `coop migrate workspace-layout --to v2 [--name <name>] [--id <id>] [--aliases <csv>] [--yes]`
32
52
  - `coop alias ...`
33
53
  - `coop list alias [pattern]`
34
54
  - `coop config index.data yaml|json`
@@ -42,10 +62,11 @@ Current implemented command families:
42
62
 
43
63
  Known limitations:
44
64
  - `ext` is still a placeholder for future phases.
45
- - Provider-backed AI is supported for `openai`, `anthropic`, `gemini`, and `ollama` via `.coop/config.yml` + env vars.
46
- - Authorization is advisory and config-driven (`.coop/config.yml -> authorization`).
47
- - Plugin runtime supports manifest triggers under `.coop/plugins/*.yml` (webhook + console + `github_pr` actions).
48
- - `coop ui` is read-only and depends on local `.coop/.index` data. The command rebuilds stale indexes before launch.
65
+ - Provider-backed AI is supported for `openai`, `anthropic`, `gemini`, and `ollama` via `.coop/projects/<project.id>/config.yml` + env vars.
66
+ - Authorization is advisory and config-driven (`.coop/projects/<project.id>/config.yml -> authorization`).
67
+ - Plugin runtime supports manifest triggers under `.coop/projects/<project.id>/plugins/*.yml` (webhook + console + `github_pr` actions).
68
+ - `coop ui` is read-only and depends on the active project's `.index` data. The command rebuilds stale indexes before launch.
69
+ - `coop init` creates `.coop/.ignore` and `.coop/.gitignore` so logs, tmp files, and index artifacts are not committed by default.
49
70
 
50
71
  GitHub integration quick example:
51
72
  ```yaml
@@ -58,7 +79,7 @@ github:
58
79
  merge_method: squash
59
80
  ```
60
81
 
61
- With `.coop/plugins/github-pr.yml` enabled:
82
+ With `.coop/projects/<project.id>/plugins/github-pr.yml` enabled:
62
83
  - `coop transition task PM-101 in_review` creates or updates a PR
63
84
  - `coop transition task PM-101 done` merges the linked PR
64
85
  - `coop webhook github --port 8787` receives GitHub review/merge webhooks and syncs task status
@@ -80,6 +101,7 @@ With cross-repo task references such as `external:platform-repo/PM-200`:
80
101
 
81
102
  Workspace identity:
82
103
  ```yaml
104
+ # .coop/projects/<project.id>/config.yml
83
105
  project:
84
106
  name: Payments Platform
85
107
  id: payments-platform
package/bin/coop.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from "../dist/index.js";
3
+
4
+ await runCli(process.argv);
package/bin/coop.mjs ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import { fileURLToPath } from "node:url";
3
+ import { spawnSync } from "node:child_process";
4
+ import path from "node:path";
5
+ import process from "node:process";
6
+
7
+ const script = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "dist", "index.js");
8
+ const result = spawnSync(process.execPath, [script, ...process.argv.slice(2)], {
9
+ stdio: "inherit",
10
+ });
11
+
12
+ process.exit(result.status ?? 1);