myte 0.0.28 → 0.0.30
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 +255 -239
- package/bin/myte.js +12 -12
- package/package.json +21 -21
package/README.md
CHANGED
|
@@ -1,239 +1,255 @@
|
|
|
1
|
-
# myte
|
|
2
|
-
|
|
3
|
-
Canonical npm package for the Myte CLI.
|
|
4
|
-
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
Local install:
|
|
8
|
-
|
|
9
|
-
- `npm install myte`
|
|
10
|
-
- run with `npx myte ...`
|
|
11
|
-
- or `npm exec myte -- ...`
|
|
12
|
-
|
|
13
|
-
Global install:
|
|
14
|
-
|
|
15
|
-
- `npm i -g myte`
|
|
16
|
-
- run with `myte ...`
|
|
17
|
-
|
|
18
|
-
No install:
|
|
19
|
-
|
|
20
|
-
- `npx myte@latest ...`
|
|
21
|
-
|
|
22
|
-
`npm install myte` does not add `myte` to your shell `PATH`. Use `npx myte` or `npm exec myte -- ...` unless you installed globally.
|
|
23
|
-
|
|
24
|
-
## Requirements
|
|
25
|
-
|
|
26
|
-
- Node `18+`
|
|
27
|
-
- macOS, Linux, or Windows
|
|
28
|
-
- `MYTE_API_KEY=<project_api_key>` in your shell or workspace `.env`
|
|
29
|
-
- `MYTEAI_API_KEY=<inference_api_key>` only for `myte ai`
|
|
30
|
-
- `git` in `PATH` only for `query --with-diff`
|
|
31
|
-
- No runtime npm dependencies beyond the Myte packages themselves.
|
|
32
|
-
|
|
33
|
-
The CLI searches for `.env` in the current folder and then up parent directories.
|
|
34
|
-
|
|
35
|
-
## Common Commands
|
|
36
|
-
|
|
37
|
-
- `npx myte config --json`
|
|
38
|
-
- `npx myte bootstrap`
|
|
39
|
-
- `npx myte sync-qaqc`
|
|
40
|
-
- `npx myte feedback-sync`
|
|
41
|
-
- `npx myte feedback get --feedback-id <id>`
|
|
42
|
-
- `npx myte feedback history --feedback-id <id>`
|
|
43
|
-
- `npx myte feedback status --feedback-id <id> --status in_review --reason "Ready for review"`
|
|
44
|
-
- `npx myte feedback edit --feedback-id <id> --title "Updated title" --feedback-text "Updated body" --reason "Clarify scope"`
|
|
45
|
-
- `npx myte feedback assign --feedback-id <id> --user-id <user_id> --reason "Assign to builder"`
|
|
46
|
-
- `npx myte feedback archive --feedback-id <id> --reason "Superseded"`
|
|
47
|
-
- `npx myte feedback validate --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
48
|
-
- `npx myte feedback submit --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
49
|
-
- `npx myte feedback reviews --status open`
|
|
50
|
-
- `npx myte feedback revise --request-id <id> --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
51
|
-
- `npx myte feedback review --request-id <id> --action approve --reason "Looks correct"`
|
|
52
|
-
- `npx myte feedback
|
|
53
|
-
- `npx myte feedback
|
|
54
|
-
- `npx myte feedback
|
|
55
|
-
- `npx myte feedback
|
|
56
|
-
- `npx myte feedback
|
|
57
|
-
- `npx myte
|
|
58
|
-
- `npx myte
|
|
59
|
-
- `npx myte
|
|
60
|
-
- `npx myte
|
|
61
|
-
- `npx myte
|
|
62
|
-
- `npx myte
|
|
63
|
-
- `npx myte update-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
- `
|
|
70
|
-
- `
|
|
71
|
-
- `
|
|
72
|
-
- `
|
|
73
|
-
- `feedback
|
|
74
|
-
- `
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
- `
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- `
|
|
140
|
-
- `
|
|
141
|
-
- `
|
|
142
|
-
- `
|
|
143
|
-
- `
|
|
144
|
-
- `
|
|
145
|
-
- `
|
|
146
|
-
- `
|
|
147
|
-
- `
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
| `feedback
|
|
184
|
-
| `feedback
|
|
185
|
-
| `feedback
|
|
186
|
-
| `feedback
|
|
187
|
-
| `feedback
|
|
188
|
-
| `feedback
|
|
189
|
-
| `feedback
|
|
190
|
-
| `feedback
|
|
191
|
-
| `feedback
|
|
192
|
-
| `feedback
|
|
193
|
-
| `feedback
|
|
194
|
-
| `feedback
|
|
195
|
-
| `feedback
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
- `
|
|
220
|
-
- `
|
|
221
|
-
- `
|
|
222
|
-
- `
|
|
223
|
-
- `
|
|
224
|
-
- `
|
|
225
|
-
- `
|
|
226
|
-
- `
|
|
227
|
-
- `
|
|
228
|
-
- `
|
|
229
|
-
- `
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
- `POST /api/project-assistant/
|
|
234
|
-
- `POST /api/project-assistant/
|
|
235
|
-
- `POST /api/project-assistant/
|
|
236
|
-
- `POST /api/project-assistant/
|
|
237
|
-
- `POST /api/project-assistant/
|
|
238
|
-
- `POST /api/project-assistant/
|
|
239
|
-
- `POST /api/project-assistant/
|
|
1
|
+
# myte
|
|
2
|
+
|
|
3
|
+
Canonical npm package for the Myte CLI.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
Local install:
|
|
8
|
+
|
|
9
|
+
- `npm install myte`
|
|
10
|
+
- run with `npx myte ...`
|
|
11
|
+
- or `npm exec myte -- ...`
|
|
12
|
+
|
|
13
|
+
Global install:
|
|
14
|
+
|
|
15
|
+
- `npm i -g myte`
|
|
16
|
+
- run with `myte ...`
|
|
17
|
+
|
|
18
|
+
No install:
|
|
19
|
+
|
|
20
|
+
- `npx myte@latest ...`
|
|
21
|
+
|
|
22
|
+
`npm install myte` does not add `myte` to your shell `PATH`. Use `npx myte` or `npm exec myte -- ...` unless you installed globally.
|
|
23
|
+
|
|
24
|
+
## Requirements
|
|
25
|
+
|
|
26
|
+
- Node `18+`
|
|
27
|
+
- macOS, Linux, or Windows
|
|
28
|
+
- `MYTE_API_KEY=<project_api_key>` in your shell or workspace `.env`
|
|
29
|
+
- `MYTEAI_API_KEY=<inference_api_key>` only for `myte ai`
|
|
30
|
+
- `git` in `PATH` only for `query --with-diff`
|
|
31
|
+
- No runtime npm dependencies beyond the Myte packages themselves.
|
|
32
|
+
|
|
33
|
+
The CLI searches for `.env` in the current folder and then up parent directories.
|
|
34
|
+
|
|
35
|
+
## Common Commands
|
|
36
|
+
|
|
37
|
+
- `npx myte config --json`
|
|
38
|
+
- `npx myte bootstrap`
|
|
39
|
+
- `npx myte sync-qaqc`
|
|
40
|
+
- `npx myte feedback-sync`
|
|
41
|
+
- `npx myte feedback get --feedback-id <id>`
|
|
42
|
+
- `npx myte feedback history --feedback-id <id>`
|
|
43
|
+
- `npx myte feedback status --feedback-id <id> --status in_review --reason "Ready for review"`
|
|
44
|
+
- `npx myte feedback edit --feedback-id <id> --title "Updated title" --feedback-text "Updated body" --reason "Clarify scope"`
|
|
45
|
+
- `npx myte feedback assign --feedback-id <id> --user-id <user_id> --reason "Assign to builder"`
|
|
46
|
+
- `npx myte feedback archive --feedback-id <id> --reason "Superseded"`
|
|
47
|
+
- `npx myte feedback validate --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
48
|
+
- `npx myte feedback submit --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
49
|
+
- `npx myte feedback reviews --status open`
|
|
50
|
+
- `npx myte feedback revise --request-id <id> --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
51
|
+
- `npx myte feedback review --request-id <id> --action approve --reason "Looks correct"`
|
|
52
|
+
- `npx myte feedback review --request-ids "<id1,id2>" --action approve --reason "Batch approval"`
|
|
53
|
+
- `npx myte feedback move --feedback-id <id> --to-state in_progress --reason "Started"`
|
|
54
|
+
- `npx myte feedback move --feedback-ids "<id1,id2>" --to-state in_progress --reason "Batch move"`
|
|
55
|
+
- `npx myte feedback undo --feedback-id <id> --event-id <event_id> --reason "Undo accidental move"`
|
|
56
|
+
- `npx myte feedback prd-versions --feedback-id <id>`
|
|
57
|
+
- `npx myte feedback prd-diff --feedback-id <id> --version-id <version_id> --compare-to <base_version_id>`
|
|
58
|
+
- `npx myte feedback apply --file ./MyteCommandCenter/reviews/feedback/<id>-edit.yml`
|
|
59
|
+
- `npx myte suggestions sync`
|
|
60
|
+
- `npx myte mission archive --mission-ids "M001" --reason "Duplicate disposable mission"`
|
|
61
|
+
- `npx myte query "Summarize the current branch changes" --with-diff`
|
|
62
|
+
- `npx myte create-prd ./drafts/auth-prd.md`
|
|
63
|
+
- `npx myte update-team "Backend deploy completed."`
|
|
64
|
+
- `npx myte update-owner --subject "QAQC progress" --body-file ./updates/owner.md`
|
|
65
|
+
- `npx myte update-client --subject "Weekly client update" --body-file ./updates/week-12.md`
|
|
66
|
+
|
|
67
|
+
## Behavior
|
|
68
|
+
|
|
69
|
+
- `bootstrap`, `sync-qaqc`, `feedback-sync`, and `suggestions sync` write project-scoped local context under `MyteCommandCenter` in the current workspace unless `--output-dir` is provided.
|
|
70
|
+
- `bootstrap` writes mission cards and mission suggestion thread state together; agents should run it before looking for mission or suggestion ids.
|
|
71
|
+
- `mission status` is active-state only (`todo`, `in_progress`, `done`). Use `mission archive` for project-key lifecycle archival; restore archived missions from the web archived-board view.
|
|
72
|
+
- `mission status` and `mission archive` refresh local bootstrap + mission-ops state by default after a successful mutation. Use `--no-sync` only when you intentionally want to skip the local refresh.
|
|
73
|
+
- `feedback status|edit|assign|archive` writes local review artifacts under `MyteCommandCenter/reviews/feedback`; `feedback submit|revise|reviews|review` routes proposed edits through the backend owner-review membrane.
|
|
74
|
+
- `feedback review --request-ids` sends one backend batch review request with grouped notifications; do not loop single-review calls for batch decisions.
|
|
75
|
+
- `feedback move|undo|prd-versions|prd-diff|history` calls the project-key Feedback API while authorization, stale snapshot checks, allowed transitions, and history remain enforced by the backend. `feedback move --feedback-ids` sends one batch board move request.
|
|
76
|
+
- `feedback-sync` excludes archived Feedback from normal `MyteCommandCenter` state. Project-key API/CLI can archive authorized Feedback, but Feedback unarchive/restore is web UI only.
|
|
77
|
+
- `feedback validate|apply` remains available for validation and owner-direct apply paths.
|
|
78
|
+
- `query --with-diff` is stricter than the snapshot commands. It requires project repositories to be configured by the project owner or builder, and it requires at least one matching local project repo to be resolved for diff collection.
|
|
79
|
+
- If diff-scoped repo configuration is missing or no local project repo can be resolved, `query --with-diff` exits with an error instead of silently dropping diff context.
|
|
80
|
+
- Most markdown files are excluded from diff context by default so code and runtime configuration changes dominate the payload. Key instruction files such as `README.md` and `AGENTS.md` remain eligible.
|
|
81
|
+
|
|
82
|
+
## Agent Usage Contract
|
|
83
|
+
|
|
84
|
+
Codex, Claude, and other coding agents should use one project-scoped key per workspace:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
MYTE_API_KEY=<project_api_key>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The key resolves the project server-side. Agents should not pass `project_id` manually for normal CLI commands, and they should not call account-scoped web/JWT endpoints with this key.
|
|
91
|
+
|
|
92
|
+
Recommended agent flow:
|
|
93
|
+
|
|
94
|
+
1. Run `myte config --json` to confirm the project, API base, configured repos, and local workspace detection.
|
|
95
|
+
2. Run `myte bootstrap --json`, `myte feedback-sync --json`, or `myte sync-qaqc --json` to hydrate local context under `MyteCommandCenter`. Use `myte suggestions sync --json` only for narrow mission-review refreshes after bootstrap.
|
|
96
|
+
3. Use `myte query "<goal/evidence/ask>" --with-diff` when local code changes matter.
|
|
97
|
+
4. Use `myte create-prd <file.md>` only after the PRD markdown has been reviewed by a human. The file body is the PRD document; `--description` is only the short board/card summary.
|
|
98
|
+
5. Use `myte feedback status|edit|assign|archive` to create reviewable local artifacts, then `feedback submit` and `feedback review` for the owner-review membrane.
|
|
99
|
+
6. Use `myte feedback move` only for direct board movement that is intentionally audited, with a clear `--reason`; use `--feedback-ids` for batch moves or batch archive.
|
|
100
|
+
7. Use `myte suggestions create|revise|review` for mission review threads. Valid create `change_type` values are exactly `update` and `create`; revisions keep the existing thread type and must not include `change_type`.
|
|
101
|
+
8. Use `myte mission archive` for project-key mission lifecycle archival. Archive requires Project Owner or elevated delegate capability; restore is web-only from the archived missions board.
|
|
102
|
+
9. Use `myte update-team "<content>"` for project/team comments through `/api/project-assistant/project-comment`.
|
|
103
|
+
|
|
104
|
+
PRD document contract:
|
|
105
|
+
|
|
106
|
+
- Always put the complete PRD in the markdown file passed to `myte create-prd`.
|
|
107
|
+
- `title` maps to the feedback/board title.
|
|
108
|
+
- `description` maps to the short feedback/card summary and must not contain the full PRD.
|
|
109
|
+
- The markdown body is sent as `prd_markdown` or `ticket_markdown`, stored as the PRD document source, mirrored as PRD text for search/sync, and used by the backend to generate the PRD DOCX.
|
|
110
|
+
- The UI renders the PRD from the stored document text, not from the card description.
|
|
111
|
+
|
|
112
|
+
Preferred file shape:
|
|
113
|
+
|
|
114
|
+
````markdown
|
|
115
|
+
```myte-kanban
|
|
116
|
+
{
|
|
117
|
+
"title": "Feedback Search PRD",
|
|
118
|
+
"description": "Improve feedback search across titles, descriptions, and stored PRD text.",
|
|
119
|
+
"priority": "Medium",
|
|
120
|
+
"tags": ["feedback", "search"]
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
# Feedback Search PRD
|
|
125
|
+
|
|
126
|
+
## Goal
|
|
127
|
+
|
|
128
|
+
Full PRD content goes here.
|
|
129
|
+
````
|
|
130
|
+
|
|
131
|
+
Feedback comments nuance:
|
|
132
|
+
|
|
133
|
+
- `myte feedback-sync` reads existing feedback comment turns and stores them in `MyteCommandCenter/data/feedback.yml`.
|
|
134
|
+
- The web product supports feedback-specific comment create/fetch through JWT-authenticated `/api/feedbacks/<feedback_id>/comments`.
|
|
135
|
+
- The project-key npm CLI does not currently expose `myte feedback comment <feedback_id> "<text>"`. Add a Project Assistant route and CLI command before documenting that as supported.
|
|
136
|
+
|
|
137
|
+
## Commands
|
|
138
|
+
|
|
139
|
+
- `config`: verify the project key and inspect local repo resolution
|
|
140
|
+
- `bootstrap`: write project board context locally
|
|
141
|
+
- `run-qaqc`: queue QAQC for explicit mission ids
|
|
142
|
+
- `mission status`: update active mission state
|
|
143
|
+
- `mission archive`: archive missions without hard delete
|
|
144
|
+
- `sync-qaqc`: refresh active mission QAQC context locally
|
|
145
|
+
- `feedback-sync`: refresh feedback and PRD context locally
|
|
146
|
+
- `feedback status|edit|assign|archive|submit|revise|reviews|review|move|undo|prd-versions|prd-diff|validate|apply|history|get`: create reviewable feedback artifacts and operate the governed Feedback API
|
|
147
|
+
- `suggestions sync|create|revise|review`: work with mission suggestion workflow state
|
|
148
|
+
- `query`: ask the project assistant, optionally with local diff context
|
|
149
|
+
- `ai`: use the Myte AI gateway
|
|
150
|
+
- `create-prd`: upload deterministic PRD markdown as the stored renderable PRD document; use `description` only as the short card summary
|
|
151
|
+
- `update-team`, `update-owner`, `update-client`: send project updates through the project-key surface
|
|
152
|
+
|
|
153
|
+
## Notes
|
|
154
|
+
|
|
155
|
+
- The package ships the CLI only. Internal rollout notes, validation logs, and project-specific operating docs are not part of the public npm contract.
|
|
156
|
+
- The public `myte` package is the supported entrypoint. The scoped `@mytegroupinc/myte-core` package is the implementation dependency used by the wrapper.
|
|
157
|
+
|
|
158
|
+
## Mission Action Map
|
|
159
|
+
|
|
160
|
+
| Action | Command / Surface | Contract |
|
|
161
|
+
| --- | --- | --- |
|
|
162
|
+
| Sync mission cards and review threads | `myte bootstrap --json` | Refreshes `MyteCommandCenter/data/missions/*.yml`, project structure, and `MyteCommandCenter/data/mission-ops.yml`. |
|
|
163
|
+
| Sync only mission review threads | `myte suggestions sync --json` | Narrow refresh for `mission-ops.yml` after bootstrap or a mutation. |
|
|
164
|
+
| Suggest edit to existing mission | `myte suggestions create` with `change_type: update` and `mission_id` | Creates or appends to an active review thread; live mission is unchanged until approval. |
|
|
165
|
+
| Suggest new mission | `myte suggestions create` with `change_type: create` | Requires `change_set.title` and `change_set.description`; mission card is created only after approval. |
|
|
166
|
+
| Revise a suggestion | `myte suggestions revise` with `suggestion_id` | Adds another revision to the same thread. Do not include `change_type`. |
|
|
167
|
+
| Review a suggestion | `myte suggestions review` with `review_action: approve|request_changes|reject` | Project Owner or elevated mission-review delegate required. |
|
|
168
|
+
| Update mission status | `myte mission status --mission-ids "M001" --status todo|in_progress|done` | Active status update only; refreshes local bootstrap + mission-ops by default. |
|
|
169
|
+
| Archive mission | `myte mission archive --mission-ids "M001" --reason "..."` | Project Owner or elevated delegate required. Keeps the mission record, hides it from normal board/bootstrap state, and refreshes local bootstrap + mission-ops by default. |
|
|
170
|
+
|
|
171
|
+
After `bootstrap`, find ids locally:
|
|
172
|
+
|
|
173
|
+
- existing mission ids: `MyteCommandCenter/data/missions/*.yml` -> `mission_id`
|
|
174
|
+
- suggestion ids: `MyteCommandCenter/data/mission-ops.yml` -> `queue[].suggestion_id` or `threads[].suggestion_id`
|
|
175
|
+
- revise revision: `threads[].latest_revision` or `threads[].latest_server_revision.revision`
|
|
176
|
+
- review revision: `threads[].review_revision`
|
|
177
|
+
- thread type: `threads[].change_type`
|
|
178
|
+
|
|
179
|
+
## Feedback Action Map
|
|
180
|
+
|
|
181
|
+
| Command | What It Does | Governance |
|
|
182
|
+
| --- | --- | --- |
|
|
183
|
+
| `feedback-sync` | Pulls non-archived feedback metadata, comments, and PRD context into `MyteCommandCenter`. | Read-only project-key API call; archived Feedback is intentionally excluded. |
|
|
184
|
+
| `feedback get` | Reads one feedback item's current server snapshot and `snapshot_hash`. | Read-only; backend checks project access. |
|
|
185
|
+
| `feedback status` | Creates a local YAML proposal to change canonical lifecycle state. | No live mutation until `submit` and owner/delegate review, except owner-direct `apply`. |
|
|
186
|
+
| `feedback edit` / `feedback refine` | Creates a local YAML proposal for title, description/body, priority, due date, tags, or notes. | Content changes go through owner-review membrane. |
|
|
187
|
+
| `feedback assign` | Creates a local YAML proposal to change assignee. | Goes through review unless applied through owner-direct path. |
|
|
188
|
+
| `feedback archive` | Creates a local YAML proposal to archive. | Archive is governed by backend owner/delegate capability. |
|
|
189
|
+
| `feedback submit` | Sends a local proposal artifact to the backend as a review request. | Does not mutate live feedback before approval. |
|
|
190
|
+
| `feedback revise` | Resubmits the original submitter's request after `request_changes`. | Only valid for the original submitter and `needs_changes` requests. |
|
|
191
|
+
| `feedback reviews` | Lists review requests or fetches one request by `--request-id`. | Read-only; response includes backend permissions. |
|
|
192
|
+
| `feedback review` | Approves, rejects, requests changes, or cancels one review request, or a batch with `--request-ids`. | Backend restricts approval/review decisions to Project Owner or elevated delegate for Feedback scope; batch review uses one grouped notification path. |
|
|
193
|
+
| `feedback move` | Moves a card or batch of cards across allowed board states directly with an audit event. | `--feedback-ids` sends one batch request. Blocked with `pending_feedback_review` while an active linked review request exists; governed states such as archive/reject/deploy/freeze remain backend-authorized. Project-key unarchive is not supported. |
|
|
194
|
+
| `feedback undo` | Reverses an audited board event when there is no conflict. | Backend validates event ownership/project scope and conflict state. |
|
|
195
|
+
| `feedback prd-versions` | Lists retained PRD baselines/revisions for a feedback item. | Read-only; old S3 objects are retained by reference. |
|
|
196
|
+
| `feedback prd-diff` | Fetches backend-generated text diff for PRD versions. | Read-only; backend controls version access. |
|
|
197
|
+
| `feedback history` | Lists audited feedback board/refinement events. | Read-only; backend checks project access. |
|
|
198
|
+
| `feedback validate` | Sends an artifact to backend validation without mutation. | Useful before submit or owner-direct apply. |
|
|
199
|
+
| `feedback apply` | Applies an artifact through the owner-direct/emergency path. | Not the normal collaborator flow; normal flow is `submit` -> `review`. |
|
|
200
|
+
|
|
201
|
+
Canonical feedback lifecycle states are `frozen`, `todo`, `in_progress`, `in_review`, `completed`, `deployed`, `rejected`, and `archived`.
|
|
202
|
+
|
|
203
|
+
Reusable live smoke harness after deploy:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
npx --package @mytegroupinc/myte-core node ./node_modules/@mytegroupinc/myte-core/scripts/feedback-live-full-harness.js --confirm-live --base-url https://api.myte.dev/api
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The harness creates five disposable `TEST` feedback items from markdown, verifies batch review and batch board movement, batch archives the disposable items, verifies normal `feedback-sync` excludes archived items, and verifies the project-key surface does not expose Feedback unarchive/restore.
|
|
210
|
+
|
|
211
|
+
## Direct Project API Surface
|
|
212
|
+
|
|
213
|
+
All routes use `Authorization: Bearer <MYTE_API_KEY>`. The CLI adds idempotency and client-session headers on mutation routes.
|
|
214
|
+
|
|
215
|
+
Read/sync routes:
|
|
216
|
+
|
|
217
|
+
- `GET /api/project-assistant/config`
|
|
218
|
+
- `GET /api/project-assistant/bootstrap`
|
|
219
|
+
- `GET /api/project-assistant/qaqc-sync`
|
|
220
|
+
- `GET /api/project-assistant/feedback-sync`
|
|
221
|
+
- `GET /api/project-assistant/feedback/<feedback_id>`
|
|
222
|
+
- `GET /api/project-assistant/feedback/<feedback_id>/refinement/history`
|
|
223
|
+
- `GET /api/project-assistant/feedback-review-requests`
|
|
224
|
+
- `GET /api/project-assistant/feedback-review-requests/<request_id>`
|
|
225
|
+
- `GET /api/project-assistant/feedback/<feedback_id>/events`
|
|
226
|
+
- `GET /api/project-assistant/feedback/<feedback_id>/prd/versions`
|
|
227
|
+
- `GET /api/project-assistant/feedback/<feedback_id>/prd/versions/<version_id>/diff`
|
|
228
|
+
- `GET /api/project-assistant/suggestions`
|
|
229
|
+
- `GET /api/project-assistant/run-qaqc/<batch_id>`
|
|
230
|
+
|
|
231
|
+
Mutation routes:
|
|
232
|
+
|
|
233
|
+
- `POST /api/project-assistant/query`
|
|
234
|
+
- `POST /api/project-assistant/run-qaqc`
|
|
235
|
+
- `POST /api/project-assistant/mission-status-update`
|
|
236
|
+
- `POST /api/project-assistant/mission-archive`
|
|
237
|
+
- `POST /api/project-assistant/project-comment`
|
|
238
|
+
- `POST /api/project-assistant/update-owner`
|
|
239
|
+
- `POST /api/project-assistant/client-update-drafts`
|
|
240
|
+
- `POST /api/project-assistant/create-prd`
|
|
241
|
+
- `POST /api/project-assistant/create-prds`
|
|
242
|
+
- `POST /api/project-assistant/feedback/<feedback_id>/refinement/validate`
|
|
243
|
+
- `POST /api/project-assistant/feedback/<feedback_id>/refinement/requests`
|
|
244
|
+
- `POST /api/project-assistant/feedback-review-requests/<request_id>/revise`
|
|
245
|
+
- `POST /api/project-assistant/feedback/<feedback_id>/refinement/apply`
|
|
246
|
+
- `POST /api/project-assistant/feedback-review-requests/<request_id>/review`
|
|
247
|
+
- `POST /api/project-assistant/feedback-review-requests/batch-review`
|
|
248
|
+
- `POST /api/project-assistant/feedback-review-requests/<request_id>/request-changes`
|
|
249
|
+
- `POST /api/project-assistant/feedback-review-requests/<request_id>/cancel`
|
|
250
|
+
- `POST /api/project-assistant/feedback/<feedback_id>/board-move`
|
|
251
|
+
- `POST /api/project-assistant/feedback/batch-board-move`
|
|
252
|
+
- `POST /api/project-assistant/feedback/<feedback_id>/events/<event_id>/undo`
|
|
253
|
+
- `POST /api/project-assistant/suggestions`
|
|
254
|
+
- `POST /api/project-assistant/suggestions/revise`
|
|
255
|
+
- `POST /api/project-assistant/suggestions/review`
|
package/bin/myte.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
const core = require("@mytegroupinc/myte-core/cli");
|
|
3
|
-
|
|
4
|
-
if (!core || typeof core.main !== "function") {
|
|
5
|
-
console.error("myte core entrypoint is unavailable.");
|
|
6
|
-
process.exit(1);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
Promise.resolve(core.main()).catch((err) => {
|
|
10
|
-
console.error("Unexpected error:", err?.message || err);
|
|
11
|
-
process.exit(1);
|
|
12
|
-
});
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const core = require("@mytegroupinc/myte-core/cli");
|
|
3
|
+
|
|
4
|
+
if (!core || typeof core.main !== "function") {
|
|
5
|
+
console.error("myte core entrypoint is unavailable.");
|
|
6
|
+
process.exit(1);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
Promise.resolve(core.main()).catch((err) => {
|
|
10
|
+
console.error("Unexpected error:", err?.message || err);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
});
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "myte",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Myte developer CLI.",
|
|
5
|
-
"type": "commonjs",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"files": [
|
|
8
|
-
"README.md",
|
|
9
|
-
"bin",
|
|
10
|
-
"package.json"
|
|
11
|
-
],
|
|
12
|
-
"bin": {
|
|
13
|
-
"myte": "bin/myte.js"
|
|
14
|
-
},
|
|
15
|
-
"engines": {
|
|
16
|
-
"node": ">=18"
|
|
17
|
-
},
|
|
18
|
-
"dependencies": {
|
|
19
|
-
"@mytegroupinc/myte-core": "0.0.
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "myte",
|
|
3
|
+
"version": "0.0.30",
|
|
4
|
+
"description": "Myte developer CLI.",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"files": [
|
|
8
|
+
"README.md",
|
|
9
|
+
"bin",
|
|
10
|
+
"package.json"
|
|
11
|
+
],
|
|
12
|
+
"bin": {
|
|
13
|
+
"myte": "bin/myte.js"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=18"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@mytegroupinc/myte-core": "0.0.30"
|
|
20
|
+
}
|
|
21
|
+
}
|