@geekbeer/minion 4.1.3 → 4.2.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/docs/api-reference.md +57 -37
- package/linux/bin/hq +68 -41
- package/linux/routes/chat.js +1 -1
- package/package.json +1 -1
- package/rules/core.md +16 -12
- package/win/routes/chat.js +1 -1
package/docs/api-reference.md
CHANGED
|
@@ -809,20 +809,22 @@ Base path: All endpoints are prefixed with `/api/minion` by the agent's API clie
|
|
|
809
809
|
|--------|----------|-------------|
|
|
810
810
|
| GET | `/api/minion/me/projects` | 参加プロジェクト一覧(role 含む) |
|
|
811
811
|
|
|
812
|
+
Query parameters:
|
|
813
|
+
- `workspace_id` (optional, UUID): 指定したワークスペースに属するプロジェクトのみ返す。省略すると参加している全プロジェクト(複数ワークスペース横断)を返す。
|
|
814
|
+
|
|
812
815
|
Response:
|
|
813
816
|
```json
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
]
|
|
817
|
+
{
|
|
818
|
+
"projects": [
|
|
819
|
+
{
|
|
820
|
+
"id": "uuid",
|
|
821
|
+
"name": "project-name",
|
|
822
|
+
"description": "...",
|
|
823
|
+
"workspace_id": "uuid",
|
|
824
|
+
"role": "pm"
|
|
825
|
+
}
|
|
826
|
+
]
|
|
827
|
+
}
|
|
826
828
|
```
|
|
827
829
|
|
|
828
830
|
`role` is one of `"pm"` (project manager), `"engineer"`, or `"accountant"`.
|
|
@@ -2107,56 +2109,74 @@ DAGスキルノードの `skill_version_id` は **オプション** です。
|
|
|
2107
2109
|
ローカルエージェントの `/api/project-memories` は上記 HQ API へのプロキシ。
|
|
2108
2110
|
詳細なリクエスト/レスポンス仕様はローカル API セクションの「Project Memories」を参照。
|
|
2109
2111
|
|
|
2110
|
-
### Notes (HQ,
|
|
2112
|
+
### Notes (HQ, ワークスペース/プロジェクトノート)
|
|
2113
|
+
|
|
2114
|
+
ノートはワークスペース直下に保存され、任意で 1 つ以上のプロジェクトにリンクできる(`note_project_links`)。
|
|
2115
|
+
**テキストベースの成果物(レポート、調査結果、要約等)はノートに保存すること。** HQダッシュボードでユーザーが即座に閲覧・編集・検索でき、バージョン管理もされる。
|
|
2116
|
+
|
|
2117
|
+
ミニオンには**ワークスペース経由API**と**プロジェクト経由API**の2系統がある:
|
|
2111
2118
|
|
|
2112
|
-
|
|
2113
|
-
|
|
2119
|
+
- **ワークスペース経由** — 自分が所属するワークスペース内のすべてのノートにアクセス可能 (プロジェクト未リンクのノート含む)。一般的な検索・整理に使う
|
|
2120
|
+
- **プロジェクト経由** — 作業コンテキストが特定プロジェクトに紐づいているときに、そのプロジェクトのノートだけを絞り込む用途。プロジェクトメンバーシップで認可される
|
|
2121
|
+
|
|
2122
|
+
**削除エンドポイントは存在しない**(事故防止のため人間操作限定)。アーカイブが必要な場合は `status=archived` で PATCH すること。
|
|
2123
|
+
|
|
2124
|
+
#### Workspace-scoped Notes
|
|
2114
2125
|
|
|
2115
2126
|
| Method | Endpoint | Description |
|
|
2116
2127
|
|--------|----------|-------------|
|
|
2117
|
-
| GET | `/api/minion/
|
|
2118
|
-
| POST | `/api/minion/
|
|
2119
|
-
| GET | `/api/minion/
|
|
2120
|
-
| PATCH | `/api/minion/
|
|
2121
|
-
| GET | `/api/minion/
|
|
2128
|
+
| GET | `/api/minion/workspaces/:id/notes` | ワークスペースのノート一覧。Query: `?status=active&search=&project_id=&include_content=true` |
|
|
2129
|
+
| POST | `/api/minion/workspaces/:id/notes` | ノート作成。Body: `{title, content?, project_ids?: string[]}`。`project_ids` 指定時は自動でリンク |
|
|
2130
|
+
| GET | `/api/minion/workspaces/:id/notes/:noteId` | ノート詳細(全文) |
|
|
2131
|
+
| PATCH | `/api/minion/workspaces/:id/notes/:noteId` | 更新(内容変更時にバージョン自動作成)。Body: `{title?, content?, status?, change_summary?}` |
|
|
2132
|
+
| GET | `/api/minion/workspaces/:id/notes/search?q=keyword` | ワークスペース全体を全文検索 |
|
|
2122
2133
|
|
|
2123
|
-
POST `/api/minion/
|
|
2134
|
+
POST `/api/minion/workspaces/:id/notes` body:
|
|
2124
2135
|
```json
|
|
2125
2136
|
{
|
|
2126
2137
|
"title": "調査レポート: ユーザー行動分析",
|
|
2127
|
-
"content": "## 概要\n..."
|
|
2138
|
+
"content": "## 概要\n...",
|
|
2139
|
+
"project_ids": ["<uuid>"]
|
|
2128
2140
|
}
|
|
2129
2141
|
```
|
|
2130
2142
|
|
|
2131
2143
|
| Field | Type | Required | Description |
|
|
2132
2144
|
|-------|------|----------|-------------|
|
|
2133
|
-
| `title` | string | Yes |
|
|
2134
|
-
| `content` | string | No |
|
|
2145
|
+
| `title` | string | Yes | ワークスペース内で一意である必要がある |
|
|
2146
|
+
| `content` | string | No | Markdown本文 |
|
|
2147
|
+
| `project_ids` | string[] | No | リンクするプロジェクト(ワークスペースに属している必要あり) |
|
|
2135
2148
|
|
|
2136
|
-
|
|
2137
|
-
```json
|
|
2138
|
-
{
|
|
2139
|
-
"title": "更新されたタイトル",
|
|
2140
|
-
"content": "更新された本文",
|
|
2141
|
-
"change_summary": "データを追加"
|
|
2142
|
-
}
|
|
2143
|
-
```
|
|
2149
|
+
#### Project-scoped Notes
|
|
2144
2150
|
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
|
2148
|
-
|
|
2149
|
-
|
|
|
2151
|
+
特定プロジェクトのノートだけを絞り込みたいときに使う。認可は `project_members` を経由。
|
|
2152
|
+
|
|
2153
|
+
| Method | Endpoint | Description |
|
|
2154
|
+
|--------|----------|-------------|
|
|
2155
|
+
| GET | `/api/minion/projects/:projectId/notes` | プロジェクトのノート一覧。Query: `?status=active&include_content=true` |
|
|
2156
|
+
| POST | `/api/minion/projects/:projectId/notes` | ノート作成 + 当該プロジェクトに自動リンク |
|
|
2157
|
+
| GET | `/api/minion/projects/:projectId/notes/:noteId` | ノート詳細(全文含む) |
|
|
2158
|
+
| PATCH | `/api/minion/projects/:projectId/notes/:noteId` | ノートを更新(内容変更時にバージョン自動作成) |
|
|
2159
|
+
| GET | `/api/minion/projects/:projectId/notes/search?q=keyword` | プロジェクト内のノートを全文検索 |
|
|
2160
|
+
|
|
2161
|
+
PATCH body は workspace 版と共通: `{title?, content?, change_summary?}` (status は workspace 経由のみ受理)。
|
|
2150
2162
|
|
|
2151
2163
|
#### hq CLI ラッパー
|
|
2152
2164
|
|
|
2153
2165
|
```bash
|
|
2166
|
+
# プロジェクトスコープ
|
|
2154
2167
|
hq note create <project_id> --title "タイトル" --content "本文"
|
|
2155
2168
|
hq note create <project_id> --title "タイトル" --file /tmp/report.md
|
|
2156
2169
|
hq note update <project_id> <note_id> --content "更新内容" --change-summary "修正理由"
|
|
2157
2170
|
hq note list <project_id>
|
|
2158
2171
|
hq note get <project_id> <note_id>
|
|
2159
2172
|
hq note search <project_id> "キーワード"
|
|
2173
|
+
|
|
2174
|
+
# ワークスペーススコープ (プロジェクト紐づけなしも対象)
|
|
2175
|
+
hq note create --workspace <workspace_id> --title "タイトル" --content "本文"
|
|
2176
|
+
hq note update --workspace <workspace_id> <note_id> --content "更新内容"
|
|
2177
|
+
hq note list --workspace <workspace_id>
|
|
2178
|
+
hq note get --workspace <workspace_id> <note_id>
|
|
2179
|
+
hq note search --workspace <workspace_id> "キーワード"
|
|
2160
2180
|
```
|
|
2161
2181
|
|
|
2162
2182
|
### Meeting Rooms 🧪 (HQ, experimental, v3.59.0〜)
|
package/linux/bin/hq
CHANGED
|
@@ -19,12 +19,17 @@
|
|
|
19
19
|
# hq list workspaces - List workspaces this minion belongs to
|
|
20
20
|
# hq list dag-workflows [project_id] - List DAG workflows (optionally filter by project)
|
|
21
21
|
# hq note create <project_id> --title "Title" --content "Body" [--file path]
|
|
22
|
-
#
|
|
22
|
+
# hq note create --workspace <workspace_id> --title "Title" --content "Body" [--file path] [--project-ids <id,id>]
|
|
23
|
+
# - Create a note (project- or workspace-scoped)
|
|
23
24
|
# hq note update <project_id> <note_id> --content "Body" [--title "Title"] [--file path] [--change-summary "summary"]
|
|
25
|
+
# hq note update --workspace <workspace_id> <note_id> --content "Body" [--title "Title"] [--status active|archived]
|
|
24
26
|
# - Update an existing note
|
|
25
27
|
# hq note list <project_id> - List notes in the project
|
|
28
|
+
# hq note list --workspace <workspace_id> - List notes in the workspace (incl. project-unlinked)
|
|
26
29
|
# hq note get <project_id> <note_id> - Get a single note with full content
|
|
30
|
+
# hq note get --workspace <workspace_id> <note_id> - Same, workspace-scoped
|
|
27
31
|
# hq note search <project_id> <query> - Search notes in the project
|
|
32
|
+
# hq note search --workspace <workspace_id> <query> - Search across the whole workspace
|
|
28
33
|
# hq create dag-workflow <body.json> - Create a DAG workflow (PM only). Body: {project_id, name, graph?, ...}
|
|
29
34
|
# hq put dag-workflow <id> <body.json> - Update DAG workflow draft (PM only). Body: {graph?, content?, ...}
|
|
30
35
|
# hq publish dag-workflow <id> - Publish the draft as a new version (PM only, validated)
|
|
@@ -163,10 +168,15 @@ print_usage() {
|
|
|
163
168
|
echo " hq list workspaces - List workspaces this minion belongs to" >&2
|
|
164
169
|
echo " hq list dag-workflows [project_id] - List DAG workflows (optionally by project)" >&2
|
|
165
170
|
echo " hq note create <project_id> --title \"Title\" --content \"Body\" [--file path]" >&2
|
|
171
|
+
echo " hq note create --workspace <ws_id> --title \"Title\" --content \"Body\" [--project-ids <id,id>]" >&2
|
|
166
172
|
echo " hq note update <project_id> <note_id> --content \"Body\" [--title \"Title\"] [--file path]" >&2
|
|
167
|
-
echo " hq note
|
|
168
|
-
echo " hq note
|
|
169
|
-
echo " hq note
|
|
173
|
+
echo " hq note update --workspace <ws_id> <note_id> --content \"Body\" [--title \"Title\"] [--status active|archived]" >&2
|
|
174
|
+
echo " hq note list <project_id> - List notes in the project" >&2
|
|
175
|
+
echo " hq note list --workspace <ws_id> - List notes in the workspace" >&2
|
|
176
|
+
echo " hq note get <project_id> <note_id> - Get a single note" >&2
|
|
177
|
+
echo " hq note get --workspace <ws_id> <note_id> - Get a single note (workspace-scoped)" >&2
|
|
178
|
+
echo " hq note search <project_id> <query> - Search notes in the project" >&2
|
|
179
|
+
echo " hq note search --workspace <ws_id> <query> - Search notes across the workspace" >&2
|
|
170
180
|
echo " hq create dag-workflow <body.json> - Create a DAG workflow (PM only)" >&2
|
|
171
181
|
echo " hq put dag-workflow <id> <body.json> - Update DAG workflow draft (PM only)" >&2
|
|
172
182
|
echo " hq publish dag-workflow <id> - Publish the draft as a new version (PM only)" >&2
|
|
@@ -310,22 +320,38 @@ case "${1:-}" in
|
|
|
310
320
|
|
|
311
321
|
note)
|
|
312
322
|
action="${2:-}"
|
|
323
|
+
shift 2 || true
|
|
324
|
+
# Resolve scope: either "--workspace <ws_id>" (must be first) or positional <project_id>.
|
|
325
|
+
note_base=""
|
|
326
|
+
if [ "${1:-}" = "--workspace" ]; then
|
|
327
|
+
ws_id="${2:-}"
|
|
328
|
+
if [ -z "$ws_id" ]; then
|
|
329
|
+
echo "Error: --workspace requires a workspace_id" >&2
|
|
330
|
+
exit 1
|
|
331
|
+
fi
|
|
332
|
+
note_base="$BASE_URL/workspaces/$ws_id/notes"
|
|
333
|
+
shift 2
|
|
334
|
+
else
|
|
335
|
+
project_id="${1:-}"
|
|
336
|
+
if [ -z "$project_id" ] || [ "${project_id#--}" != "$project_id" ]; then
|
|
337
|
+
echo "Usage: hq note $action <project_id> ... | hq note $action --workspace <ws_id> ..." >&2
|
|
338
|
+
exit 1
|
|
339
|
+
fi
|
|
340
|
+
note_base="$BASE_URL/projects/$project_id/notes"
|
|
341
|
+
shift
|
|
342
|
+
fi
|
|
313
343
|
case "$action" in
|
|
314
344
|
create)
|
|
315
|
-
project_id="${3:-}"
|
|
316
|
-
if [ -z "$project_id" ]; then
|
|
317
|
-
echo "Usage: hq note create <project_id> --title \"Title\" --content \"Body\" [--file path]" >&2
|
|
318
|
-
exit 1
|
|
319
|
-
fi
|
|
320
|
-
shift 3
|
|
321
345
|
note_title=""
|
|
322
346
|
note_content=""
|
|
323
347
|
note_file=""
|
|
348
|
+
project_ids_csv=""
|
|
324
349
|
while [ $# -gt 0 ]; do
|
|
325
350
|
case "$1" in
|
|
326
351
|
--title) note_title="$2"; shift 2 ;;
|
|
327
352
|
--content) note_content="$2"; shift 2 ;;
|
|
328
353
|
--file) note_file="$2"; shift 2 ;;
|
|
354
|
+
--project-ids) project_ids_csv="$2"; shift 2 ;;
|
|
329
355
|
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
|
330
356
|
esac
|
|
331
357
|
done
|
|
@@ -344,38 +370,47 @@ case "${1:-}" in
|
|
|
344
370
|
echo "Error: --content or --file is required" >&2
|
|
345
371
|
exit 1
|
|
346
372
|
fi
|
|
347
|
-
# Build JSON body using jq or python3
|
|
348
373
|
if command -v jq &>/dev/null; then
|
|
349
374
|
body=$(jq -n --arg t "$note_title" --arg c "$note_content" '{title: $t, content: $c}')
|
|
375
|
+
if [ -n "$project_ids_csv" ]; then
|
|
376
|
+
body=$(echo "$body" | jq --arg ids "$project_ids_csv" '. + {project_ids: ($ids | split(","))}')
|
|
377
|
+
fi
|
|
350
378
|
elif command -v python3 &>/dev/null; then
|
|
351
|
-
body=$(python3 -c "
|
|
379
|
+
body=$(python3 -c "
|
|
380
|
+
import json, sys
|
|
381
|
+
d = {'title': sys.argv[1], 'content': sys.argv[2]}
|
|
382
|
+
if sys.argv[3]:
|
|
383
|
+
d['project_ids'] = [s for s in sys.argv[3].split(',') if s]
|
|
384
|
+
print(json.dumps(d))
|
|
385
|
+
" "$note_title" "$note_content" "$project_ids_csv")
|
|
352
386
|
else
|
|
353
387
|
echo "Error: jq or python3 is required to build JSON" >&2
|
|
354
388
|
exit 1
|
|
355
389
|
fi
|
|
356
390
|
tmpfile=$(mktemp)
|
|
357
391
|
echo "$body" > "$tmpfile"
|
|
358
|
-
send_json_request POST "$
|
|
392
|
+
send_json_request POST "$note_base" "$tmpfile"
|
|
359
393
|
rm -f "$tmpfile"
|
|
360
394
|
;;
|
|
361
395
|
update)
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
echo "Usage: hq note update <project_id> <note_id> --content \"Body\" [--title \"Title\"] [--file path] [--change-summary \"summary\"]" >&2
|
|
396
|
+
note_id="${1:-}"
|
|
397
|
+
if [ -z "$note_id" ]; then
|
|
398
|
+
echo "Error: <note_id> is required" >&2
|
|
366
399
|
exit 1
|
|
367
400
|
fi
|
|
368
|
-
shift
|
|
401
|
+
shift
|
|
369
402
|
note_title=""
|
|
370
403
|
note_content=""
|
|
371
404
|
note_file=""
|
|
372
405
|
change_summary=""
|
|
406
|
+
note_status=""
|
|
373
407
|
while [ $# -gt 0 ]; do
|
|
374
408
|
case "$1" in
|
|
375
409
|
--title) note_title="$2"; shift 2 ;;
|
|
376
410
|
--content) note_content="$2"; shift 2 ;;
|
|
377
411
|
--file) note_file="$2"; shift 2 ;;
|
|
378
412
|
--change-summary) change_summary="$2"; shift 2 ;;
|
|
413
|
+
--status) note_status="$2"; shift 2 ;;
|
|
379
414
|
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
|
380
415
|
esac
|
|
381
416
|
done
|
|
@@ -386,16 +421,16 @@ case "${1:-}" in
|
|
|
386
421
|
fi
|
|
387
422
|
note_content=$(cat "$note_file")
|
|
388
423
|
fi
|
|
389
|
-
if [ -z "$note_content" ] && [ -z "$note_title" ]; then
|
|
390
|
-
echo "Error: at least --content, --file, or --
|
|
424
|
+
if [ -z "$note_content" ] && [ -z "$note_title" ] && [ -z "$note_status" ]; then
|
|
425
|
+
echo "Error: at least --content, --file, --title, or --status is required" >&2
|
|
391
426
|
exit 1
|
|
392
427
|
fi
|
|
393
|
-
# Build JSON body
|
|
394
428
|
if command -v jq &>/dev/null; then
|
|
395
429
|
body="{}"
|
|
396
430
|
[ -n "$note_title" ] && body=$(echo "$body" | jq --arg t "$note_title" '. + {title: $t}')
|
|
397
431
|
[ -n "$note_content" ] && body=$(echo "$body" | jq --arg c "$note_content" '. + {content: $c}')
|
|
398
432
|
[ -n "$change_summary" ] && body=$(echo "$body" | jq --arg s "$change_summary" '. + {change_summary: $s}')
|
|
433
|
+
[ -n "$note_status" ] && body=$(echo "$body" | jq --arg st "$note_status" '. + {status: $st}')
|
|
399
434
|
elif command -v python3 &>/dev/null; then
|
|
400
435
|
body=$(python3 -c "
|
|
401
436
|
import json, sys
|
|
@@ -403,20 +438,20 @@ d = {}
|
|
|
403
438
|
if sys.argv[1]: d['title'] = sys.argv[1]
|
|
404
439
|
if sys.argv[2]: d['content'] = sys.argv[2]
|
|
405
440
|
if sys.argv[3]: d['change_summary'] = sys.argv[3]
|
|
441
|
+
if sys.argv[4]: d['status'] = sys.argv[4]
|
|
406
442
|
print(json.dumps(d))
|
|
407
|
-
" "$note_title" "$note_content" "$change_summary")
|
|
443
|
+
" "$note_title" "$note_content" "$change_summary" "$note_status")
|
|
408
444
|
else
|
|
409
445
|
echo "Error: jq or python3 is required to build JSON" >&2
|
|
410
446
|
exit 1
|
|
411
447
|
fi
|
|
412
448
|
tmpfile=$(mktemp)
|
|
413
449
|
echo "$body" > "$tmpfile"
|
|
414
|
-
# Use PATCH for update
|
|
415
450
|
response=$(curl -s -w "\n%{http_code}" -X PATCH \
|
|
416
451
|
-H "Authorization: Bearer $API_TOKEN" \
|
|
417
452
|
-H "Content-Type: application/json" \
|
|
418
453
|
--data-binary "@$tmpfile" \
|
|
419
|
-
"$
|
|
454
|
+
"$note_base/$note_id")
|
|
420
455
|
rm -f "$tmpfile"
|
|
421
456
|
http_code=$(echo "$response" | tail -1)
|
|
422
457
|
body_out=$(echo "$response" | sed '$d')
|
|
@@ -429,30 +464,22 @@ print(json.dumps(d))
|
|
|
429
464
|
fi
|
|
430
465
|
;;
|
|
431
466
|
list)
|
|
432
|
-
|
|
433
|
-
if [ -z "$project_id" ]; then
|
|
434
|
-
echo "Usage: hq note list <project_id>" >&2
|
|
435
|
-
exit 1
|
|
436
|
-
fi
|
|
437
|
-
fetch_resource "$BASE_URL/projects/$project_id/notes?include_content=false"
|
|
467
|
+
fetch_resource "$note_base?include_content=false"
|
|
438
468
|
;;
|
|
439
469
|
get)
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
echo "Usage: hq note get <project_id> <note_id>" >&2
|
|
470
|
+
note_id="${1:-}"
|
|
471
|
+
if [ -z "$note_id" ]; then
|
|
472
|
+
echo "Error: <note_id> is required" >&2
|
|
444
473
|
exit 1
|
|
445
474
|
fi
|
|
446
|
-
fetch_resource "$
|
|
475
|
+
fetch_resource "$note_base/$note_id"
|
|
447
476
|
;;
|
|
448
477
|
search)
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
echo "Usage: hq note search <project_id> <query>" >&2
|
|
478
|
+
query="${1:-}"
|
|
479
|
+
if [ -z "$query" ]; then
|
|
480
|
+
echo "Error: <query> is required" >&2
|
|
453
481
|
exit 1
|
|
454
482
|
fi
|
|
455
|
-
# URL-encode the query
|
|
456
483
|
if command -v jq &>/dev/null; then
|
|
457
484
|
encoded=$(printf '%s' "$query" | jq -sRr @uri)
|
|
458
485
|
elif command -v python3 &>/dev/null; then
|
|
@@ -460,7 +487,7 @@ print(json.dumps(d))
|
|
|
460
487
|
else
|
|
461
488
|
encoded="$query"
|
|
462
489
|
fi
|
|
463
|
-
fetch_resource "$
|
|
490
|
+
fetch_resource "$note_base/search?q=$encoded"
|
|
464
491
|
;;
|
|
465
492
|
*)
|
|
466
493
|
echo "Unknown note action: $action" >&2
|
package/linux/routes/chat.js
CHANGED
|
@@ -391,7 +391,7 @@ async function buildContextPrefix(message, context, sessionId, workspaceId, refe
|
|
|
391
391
|
'[ファイル出力ルール]',
|
|
392
392
|
'成果物の保存先は以下のルールに従うこと。`/home/minion/` 直下にファイルを保存しないこと。',
|
|
393
393
|
'',
|
|
394
|
-
'- **テキスト成果物**(レポート、調査結果、要約等)→ ノートに保存: `hq note create <project_id> --title "タイトル" --content "本文"`',
|
|
394
|
+
'- **テキスト成果物**(レポート、調査結果、要約等)→ ノートに保存: `hq note create <project_id> --title "タイトル" --content "本文"` (プロジェクト紐づけなしは `hq note create --workspace <ws_id> ...`)',
|
|
395
395
|
'- **バイナリファイル**(PDF、画像、ZIP等)→ `~/files/` に配置(ユーザーがHQからダウンロード可能)',
|
|
396
396
|
'- **一時ファイル** → `/tmp/` に配置(作業後に削除)',
|
|
397
397
|
'',
|
package/package.json
CHANGED
package/rules/core.md
CHANGED
|
@@ -445,28 +445,32 @@ display_name が同じユーザーが同一ワークスペースに複数いる
|
|
|
445
445
|
|
|
446
446
|
### ノートへの保存 (`hq note` コマンド)
|
|
447
447
|
|
|
448
|
-
|
|
448
|
+
テキストベースの成果物は原則ノートに保存する。ノートはワークスペース直下に保存され、任意で 1 つ以上のプロジェクトにリンクできる。HQダッシュボードで閲覧・編集・検索でき、バージョン管理もされる。
|
|
449
|
+
|
|
450
|
+
スコープの使い分け:
|
|
451
|
+
|
|
452
|
+
- **プロジェクトスコープ** — 作業がプロジェクトに紐づくとき (`hq note ... <project_id>`)。プロジェクトのノートタブから即発見できる
|
|
453
|
+
- **ワークスペーススコープ** — プロジェクトに紐づかない一般的なメモや、ワークスペース横断で検索したいとき (`hq note ... --workspace <workspace_id>`)。プロジェクト未指定でも作成・検索できる
|
|
449
454
|
|
|
450
455
|
```bash
|
|
451
|
-
#
|
|
456
|
+
# プロジェクトスコープ(作業コンテキストが特定プロジェクト)
|
|
452
457
|
hq note create <project_id> --title "レポートタイトル" --content "本文..."
|
|
453
|
-
|
|
454
|
-
# 長い内容はファイルから読み込む
|
|
455
458
|
hq note create <project_id> --title "調査結果" --file /tmp/report.md
|
|
456
|
-
|
|
457
|
-
# 既存ノートを更新
|
|
458
459
|
hq note update <project_id> <note_id> --content "更新された内容"
|
|
459
|
-
|
|
460
|
-
# ノート一覧を確認
|
|
461
460
|
hq note list <project_id>
|
|
462
|
-
|
|
463
|
-
# ノート内容を取得
|
|
464
461
|
hq note get <project_id> <note_id>
|
|
465
|
-
|
|
466
|
-
# ノートを検索
|
|
467
462
|
hq note search <project_id> "キーワード"
|
|
463
|
+
|
|
464
|
+
# ワークスペーススコープ(プロジェクト未紐づけのノート含む)
|
|
465
|
+
hq note create --workspace <workspace_id> --title "メモ" --content "..."
|
|
466
|
+
hq note update --workspace <workspace_id> <note_id> --content "更新内容"
|
|
467
|
+
hq note list --workspace <workspace_id>
|
|
468
|
+
hq note get --workspace <workspace_id> <note_id>
|
|
469
|
+
hq note search --workspace <workspace_id> "キーワード"
|
|
468
470
|
```
|
|
469
471
|
|
|
472
|
+
**削除はミニオンから実行できない**(事故防止のため人間操作限定)。不要なノートは `hq note update ... --status archived` (または PATCH の `status: "archived"`) でアーカイブすること。
|
|
473
|
+
|
|
470
474
|
### ノート内のユーザーメンション
|
|
471
475
|
|
|
472
476
|
人間ユーザーがノート編集UIで `Ctrl+I` を押すと、自分の発言を示すアバター付きチップが行頭に挿入される。マークダウン上は次の形式で永続化される:
|
package/win/routes/chat.js
CHANGED
|
@@ -452,7 +452,7 @@ async function buildContextPrefix(message, context, sessionId, workspaceId, refe
|
|
|
452
452
|
'[ファイル出力ルール]',
|
|
453
453
|
'成果物の保存先は以下のルールに従うこと。`/home/minion/` 直下にファイルを保存しないこと。',
|
|
454
454
|
'',
|
|
455
|
-
'- **テキスト成果物**(レポート、調査結果、要約等)→ ノートに保存: `hq note create <project_id> --title "タイトル" --content "本文"`',
|
|
455
|
+
'- **テキスト成果物**(レポート、調査結果、要約等)→ ノートに保存: `hq note create <project_id> --title "タイトル" --content "本文"` (プロジェクト紐づけなしは `hq note create --workspace <ws_id> ...`)',
|
|
456
456
|
'- **バイナリファイル**(PDF、画像、ZIP等)→ `~/files/` に配置(ユーザーがHQからダウンロード可能)',
|
|
457
457
|
'- **一時ファイル** → `/tmp/` に配置(作業後に削除)',
|
|
458
458
|
'',
|