@geekbeer/minion 4.2.1 → 4.3.3
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/core/lib/bundled-skills.js +94 -0
- package/docs/api-reference.md +117 -7
- package/docs/task-guides.md +19 -0
- package/linux/server.js +24 -0
- package/package.json +1 -1
- package/roles/accountant.md +12 -3
- package/rules/core.md +62 -0
- package/skills/accounting-bookkeeping/SKILL.md +94 -21
- package/skills/accounting-bookkeeping/references/api-counterparties.md +24 -40
- package/skills/accounting-bookkeeping/references/api-expense-reimbursement.md +47 -134
- package/skills/accounting-bookkeeping/references/api-journal-entries.md +29 -12
- package/skills/accounting-bookkeeping/references/api-receipts.md +75 -0
- package/skills/accounting-bookkeeping/references/api-reports-tax.md +106 -0
- package/skills/accounting-bookkeeping/references/troubleshooting.md +42 -25
- package/win/server.js +24 -0
|
@@ -2,19 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
会計APIで遭遇しやすいエラーパターンと対処。
|
|
4
4
|
|
|
5
|
+
> パスはすべて **ミニオン用** `$HQ_URL/api/minion/workspaces/:id/accounting/` を基準とした相対表記。
|
|
6
|
+
|
|
5
7
|
## エラーレスポンスの構造
|
|
6
8
|
|
|
7
9
|
```json
|
|
8
10
|
{
|
|
9
11
|
"error": "missing_default_payable_account",
|
|
10
12
|
"message": "取引先「山田太郎」に立替用の貸方科目が未設定です",
|
|
11
|
-
"next_action": "PATCH /
|
|
13
|
+
"next_action": "PATCH /counterparties/<id> で default_payable_account_id を設定してください",
|
|
12
14
|
"context": { "counterparty_id": "..." }
|
|
13
15
|
}
|
|
14
16
|
```
|
|
15
17
|
|
|
16
18
|
**必ず `next_action` を読み、その指示に従うこと。** 指示が曖昧な場合のみ自己判断する。
|
|
17
19
|
|
|
20
|
+
## アクセス・認証まわり
|
|
21
|
+
|
|
22
|
+
### `accountant_role_required` (403)
|
|
23
|
+
|
|
24
|
+
**原因:** 呼び出しミニオンが workspace 内のどのプロジェクトでも accountant ロールを持っていない。
|
|
25
|
+
|
|
26
|
+
**対処:** 自己解決不可。`POST /api/threads` で `@user` メンションし、accountant ロール付与を依頼する。
|
|
27
|
+
|
|
28
|
+
### `feature_disabled` (403)
|
|
29
|
+
|
|
30
|
+
**原因:** workspace で `experimental_accounting` フラグが OFF。
|
|
31
|
+
|
|
32
|
+
**対処:** 自己解決不可。人間にフラグ有効化を依頼する。
|
|
33
|
+
|
|
18
34
|
## 立替経費まわり
|
|
19
35
|
|
|
20
36
|
### `missing_default_payable_account` (422)
|
|
@@ -23,9 +39,9 @@
|
|
|
23
39
|
|
|
24
40
|
**対処:**
|
|
25
41
|
1. liability 型の科目「役員借入金」「従業員未払金」などがあるか確認
|
|
26
|
-
- `GET /
|
|
27
|
-
2. 無ければ作成: `POST /
|
|
28
|
-
3. counterparty に紐付け: `PATCH /
|
|
42
|
+
- `GET /accounts?type=liability`
|
|
43
|
+
2. 無ければ作成: `POST /accounts` で `{ name: "役員借入金", type: "liability" }`
|
|
44
|
+
3. counterparty に紐付け: `PATCH /counterparties/<id>` で `{ default_payable_account_id: "..." }`
|
|
29
45
|
4. 立替記帳をリトライ
|
|
30
46
|
|
|
31
47
|
### `counterparty_not_found` (404)
|
|
@@ -33,8 +49,8 @@
|
|
|
33
49
|
**原因:** 立替者の counterparty が未登録。
|
|
34
50
|
|
|
35
51
|
**対処:**
|
|
36
|
-
1. `GET /
|
|
37
|
-
2. 該当者がいなければ `POST /
|
|
52
|
+
1. `GET /counterparties?kind=director,employee` で typo の可能性を確認
|
|
53
|
+
2. 該当者がいなければ `POST /counterparties` で作成
|
|
38
54
|
- 役員なら `kind: "director"`、従業員なら `kind: "employee"`
|
|
39
55
|
- 可能なら `default_payable_account_id` も同時に設定
|
|
40
56
|
|
|
@@ -47,12 +63,6 @@
|
|
|
47
63
|
- 同一人物なら既存IDを使う
|
|
48
64
|
- 別人なら名前を変える(例: "山田太郎(役員)" vs "山田太郎(従業員)")
|
|
49
65
|
|
|
50
|
-
### `already_settled` (409)
|
|
51
|
-
|
|
52
|
-
**原因:** 精算しようとした立替が既に精算済み。
|
|
53
|
-
|
|
54
|
-
**対処:** `context.settled_at` と `context.settlement_journal_entry_id` を確認し、二重精算を回避
|
|
55
|
-
|
|
56
66
|
## 期間まわり
|
|
57
67
|
|
|
58
68
|
### `period_closed` (409)
|
|
@@ -60,7 +70,7 @@
|
|
|
60
70
|
**原因:** 指定日付が締め済期間内。
|
|
61
71
|
|
|
62
72
|
**対処:**
|
|
63
|
-
- 締めはPMの権限。勝手に再オープンしない
|
|
73
|
+
- 締めはPMの権限。勝手に再オープンしない(再オープンは人間専用)
|
|
64
74
|
- 締め後の取引なら日付を調整(後日付に変更)、または PM にエスカレーション
|
|
65
75
|
- threadで `mentions: ["role:pm"]` を付けて「<DATE> の取引が締め後だが記帳が必要」と相談
|
|
66
76
|
|
|
@@ -70,13 +80,7 @@
|
|
|
70
80
|
|
|
71
81
|
**原因:** 立替経費の費用科目に expense 型でない科目を指定した。
|
|
72
82
|
|
|
73
|
-
**対処:** `GET /
|
|
74
|
-
|
|
75
|
-
### `not_a_wallet_account` (400)
|
|
76
|
-
|
|
77
|
-
**原因:** 精算時の支払口座に `is_wallet=false` の科目を指定した。
|
|
78
|
-
|
|
79
|
-
**対処:** `is_wallet=true` の科目(現金/普通預金)を選択
|
|
83
|
+
**対処:** `GET /accounts?type=expense` の科目を取得して使用
|
|
80
84
|
|
|
81
85
|
### `invalid_default_payable_account` (400)
|
|
82
86
|
|
|
@@ -84,6 +88,11 @@
|
|
|
84
88
|
|
|
85
89
|
**対処:** liability 型(または equity 型)の科目を指定する。「立替金」(asset)は逆向きなので使わない
|
|
86
90
|
|
|
91
|
+
### 科目の rename / アーカイブが必要なとき — **人間専用**
|
|
92
|
+
|
|
93
|
+
ミニオンは `POST /accounts`(作成)のみ可能。誤って作った科目の修正・アーカイブ・削除はできない。
|
|
94
|
+
`POST /api/threads` で `@user` メンションして HQ UI `/accounting/accounts` での操作を依頼する。
|
|
95
|
+
|
|
87
96
|
## 仕訳整合性
|
|
88
97
|
|
|
89
98
|
### `at least 2 lines required` / `debit/credit must balance`
|
|
@@ -95,6 +104,13 @@
|
|
|
95
104
|
- 借方合計 = 貸方合計 を自前で計算してから POST
|
|
96
105
|
- DB trigger は不整合を必ず検出するので、ローカル検算が大事
|
|
97
106
|
|
|
107
|
+
### `human_owned_entry` (409)
|
|
108
|
+
|
|
109
|
+
**原因:** 人間が作成した仕訳 (`source='manual'`/`'import'`) を PATCH しようとした。
|
|
110
|
+
|
|
111
|
+
**対処:** ミニオンは自分が作成した仕訳 (`source='ai_generated'`) しか編集できない。
|
|
112
|
+
人間作成仕訳の訂正が必要なら `POST /api/threads` で人間に依頼する。
|
|
113
|
+
|
|
98
114
|
## 取引先のアーカイブ
|
|
99
115
|
|
|
100
116
|
### `has_unsettled_reimbursements` (409)
|
|
@@ -102,9 +118,9 @@
|
|
|
102
118
|
**原因:** 未精算の立替が残っている取引先をアーカイブしようとした。
|
|
103
119
|
|
|
104
120
|
**対処:**
|
|
105
|
-
1. `GET /
|
|
106
|
-
2.
|
|
107
|
-
3.
|
|
121
|
+
1. `GET /reimbursements?counterparty_id=<id>&status=unsettled` で未精算リスト取得
|
|
122
|
+
2. **精算は人間専用** — `POST /api/threads` で `@user` に精算を依頼する
|
|
123
|
+
3. 全件精算後にアーカイブを再実行
|
|
108
124
|
|
|
109
125
|
## 自己解決できない場合
|
|
110
126
|
|
|
@@ -112,6 +128,7 @@
|
|
|
112
128
|
|
|
113
129
|
1. プロジェクトメモリーで過去事例を検索
|
|
114
130
|
2. なければ `POST /api/threads` でヘルプスレッド起票
|
|
115
|
-
- `thread_type: "help"`, `mentions: ["role:pm"]`
|
|
131
|
+
- `thread_type: "help"`, `mentions: ["role:pm"]` (人間判断が要るなら `["user"]`)
|
|
116
132
|
- `attempted_resolution` に試したことを必ず書く
|
|
117
|
-
3. **仕訳を中途半端な状態で残さない。**
|
|
133
|
+
3. **仕訳を中途半端な状態で残さない。** ただしミニオンは仕訳・立替を DELETE できないため、
|
|
134
|
+
取消が必要な場合は状況を thread に明記して人間に削除を依頼する
|
package/win/server.js
CHANGED
|
@@ -33,6 +33,10 @@ const boardTaskRunner = require('./board-task-runner')
|
|
|
33
33
|
// Config warnings (included in heartbeat)
|
|
34
34
|
const { getConfigWarnings } = require('../core/lib/config-warnings')
|
|
35
35
|
|
|
36
|
+
// Bundled skill deployment (version-gated, see core/lib/bundled-skills.js)
|
|
37
|
+
const { syncBundledSkills } = require('../core/lib/bundled-skills')
|
|
38
|
+
const { getActiveSkillDirs } = require('../core/llm-plugins/lib/skill-dirs')
|
|
39
|
+
|
|
36
40
|
// Pull-model daemons (from core/)
|
|
37
41
|
const stepPoller = require('../core/lib/step-poller')
|
|
38
42
|
const dagStepPoller = require('../core/lib/dag-step-poller')
|
|
@@ -214,6 +218,25 @@ function syncBundledDocs() {
|
|
|
214
218
|
}
|
|
215
219
|
}
|
|
216
220
|
|
|
221
|
+
/**
|
|
222
|
+
* (Re)deploy bundled skills to the active LLM skill directories when the package
|
|
223
|
+
* version changed. Lets `update-agent` (npm install + restart) propagate skill
|
|
224
|
+
* fixes without re-running configure, while preserving HQ-fetched customizations
|
|
225
|
+
* across ordinary restarts. See core/lib/bundled-skills.js.
|
|
226
|
+
*/
|
|
227
|
+
function syncBundledSkillsOnStartup() {
|
|
228
|
+
try {
|
|
229
|
+
syncBundledSkills({
|
|
230
|
+
packageRoot: path.join(__dirname, '..'),
|
|
231
|
+
version,
|
|
232
|
+
targetDirs: getActiveSkillDirs(),
|
|
233
|
+
markerPath: path.join(config.HOME_DIR, '.minion', 'skills-sync-version'),
|
|
234
|
+
})
|
|
235
|
+
} catch (err) {
|
|
236
|
+
console.error(`[Skills] Bundled skill sync skipped: ${err.message}`)
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
217
240
|
/**
|
|
218
241
|
* Register all routes (compatible + Windows-specific)
|
|
219
242
|
*/
|
|
@@ -285,6 +308,7 @@ async function start() {
|
|
|
285
308
|
syncBundledRules()
|
|
286
309
|
syncBundledRoles()
|
|
287
310
|
syncBundledDocs()
|
|
311
|
+
syncBundledSkillsOnStartup()
|
|
288
312
|
syncPermissions()
|
|
289
313
|
// Note: tmux.conf sync is skipped on Windows (not needed)
|
|
290
314
|
|