@yigemo/choosefire 0.1.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 +83 -0
- package/contracts/choosefire-family-wealth/v2/capability-matrix.v1.json +464 -0
- package/contracts/choosefire-family-wealth/v2/golden/performance.v1.json +79 -0
- package/contracts/choosefire-family-wealth/v2/golden/r2-contract.v1.json +1070 -0
- package/contracts/choosefire-family-wealth/v2/golden/scenarios.v1.json +241 -0
- package/contracts/choosefire-family-wealth/v2/golden/transport.v1.json +207 -0
- package/contracts/choosefire-family-wealth/v2/manifest.json +58 -0
- package/contracts/choosefire-family-wealth/v2/openapi.generated.json +2605 -0
- package/contracts/choosefire-family-wealth/v2/runtime-schemas/family-wealth.v2.schema.json +2127 -0
- package/contracts/choosefire-family-wealth/v2/taxonomies/account-types.v1.json +41 -0
- package/contracts/choosefire-family-wealth/v2/taxonomies/asset-classes.v1.json +45 -0
- package/contracts/choosefire-family-wealth/v2/taxonomies/transaction-types.v1.json +57 -0
- package/contracts/choosefire-financial-workspace/v1/field-registry.generated.json +137 -0
- package/contracts/choosefire-financial-workspace/v1/field-registry.manifest.json +11 -0
- package/contracts/choosefire-financial-workspace/v1/golden/commands.invalid.json +583 -0
- package/contracts/choosefire-financial-workspace/v1/golden/commands.valid.json +201 -0
- package/contracts/choosefire-financial-workspace/v1/golden/cursors.invalid.json +82 -0
- package/contracts/choosefire-financial-workspace/v1/golden/errors.invalid.json +191 -0
- package/contracts/choosefire-financial-workspace/v1/golden/errors.valid.json +298 -0
- package/contracts/choosefire-financial-workspace/v1/golden/fingerprints.json +105 -0
- package/contracts/choosefire-financial-workspace/v1/golden/projections.invalid.json +3543 -0
- package/contracts/choosefire-financial-workspace/v1/golden/projections.valid.json +2953 -0
- package/contracts/choosefire-financial-workspace/v1/manifest.json +69 -0
- package/contracts/choosefire-financial-workspace/v1/openapi.generated.json +1987 -0
- package/contracts/choosefire-financial-workspace/v1/runtime-schemas/financial-workspace.v1.schema.json +1496 -0
- package/dist/args.d.ts +5 -0
- package/dist/args.js +60 -0
- package/dist/args.js.map +1 -0
- package/dist/auth.d.ts +55 -0
- package/dist/auth.js +480 -0
- package/dist/auth.js.map +1 -0
- package/dist/commands.d.ts +4 -0
- package/dist/commands.js +637 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/family-wealth-v2-contracts.d.ts +276 -0
- package/dist/family-wealth-v2-contracts.js +77 -0
- package/dist/family-wealth-v2-contracts.js.map +1 -0
- package/dist/family-wealth-v2-http.d.ts +65 -0
- package/dist/family-wealth-v2-http.js +340 -0
- package/dist/family-wealth-v2-http.js.map +1 -0
- package/dist/financial-workspace-contracts.d.ts +191 -0
- package/dist/financial-workspace-contracts.js +282 -0
- package/dist/financial-workspace-contracts.js.map +1 -0
- package/dist/http.d.ts +76 -0
- package/dist/http.js +446 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +18 -0
- package/dist/output.js +111 -0
- package/dist/output.js.map +1 -0
- package/dist/token-store.d.ts +27 -0
- package/dist/token-store.js +408 -0
- package/dist/token-store.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# ChooseFIRE CLI
|
|
2
|
+
|
|
3
|
+
Command-line tools for ChooseFIRE data operations.
|
|
4
|
+
|
|
5
|
+
This CLI is intentionally thin: it calls approved ChooseFIRE backend endpoints and prints stable JSON for humans, scripts, and AI agents. It does not read or upload the rich local FIRE workspace.
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
Install the public package globally, then run it with the short `choosefire` command:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install --global @yigemo/choosefire
|
|
13
|
+
choosefire --help
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
For local development:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pnpm install
|
|
20
|
+
pnpm build
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Log in through Accounts:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
choosefire auth login
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The CLI opens your browser, completes Accounts login, receives the callback on `127.0.0.1:8787`, and stores audience-separated legacy and workspace credentials in:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
~/.choosefire/config.json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For local backend development, only set the API base URL:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
export CHOOSEFIRE_API_BASE_URL=http://localhost:3000
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Account workspace transport and account authority remain unavailable. Keep the flag off unless the 5A4 evidence gate and enablement owner explicitly approve a controlled synthetic-account drill; real accounts and real financial data are not authorized:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
export CHOOSEFIRE_ACCOUNT_WORKSPACE_ENABLED=true
|
|
45
|
+
export CHOOSEFIRE_OIDC_CLIENT_ID=choosefire-cli
|
|
46
|
+
choosefire auth login --json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Commands
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
choosefire auth status --json
|
|
53
|
+
choosefire auth login --json
|
|
54
|
+
choosefire auth logout --json
|
|
55
|
+
choosefire workspace initialize --idempotency-key <key> --json
|
|
56
|
+
choosefire workspace snapshot --json
|
|
57
|
+
choosefire workspace summary --json
|
|
58
|
+
choosefire workspace activity --limit 50 [--cursor <cursor>] --json
|
|
59
|
+
choosefire workspace fact-record --expected-version <n> --idempotency-key <key> --field household.total_assets --amount 100.5 --currency CNY [--status confirmed|estimated] [--as-of <iso>] --json
|
|
60
|
+
choosefire plan list --json
|
|
61
|
+
choosefire plan get <plan-id> --json
|
|
62
|
+
choosefire plan update-inputs <plan-id> --annual-return 0.035 --annual-inflation 0.04 --expected-updated-at <iso> --dry-run --json
|
|
63
|
+
choosefire plan duplicate <plan-id> --name "Conservative" --set annualReturn=0.035 --expected-updated-at <iso> --dry-run --json
|
|
64
|
+
choosefire plan set-default <plan-id> --expected-updated-at <iso> --dry-run --json
|
|
65
|
+
choosefire plan archive <plan-id> --expected-updated-at <iso> --reason "cleanup" --dry-run --json
|
|
66
|
+
choosefire asset upsert --plan <plan-id> --account-id asset-bank --amount 300000 --expected-return 0.02 --expected-updated-at <iso> --dry-run --json
|
|
67
|
+
choosefire asset remove --plan <plan-id> --account-id asset-bank --reason "duplicate account" --expected-updated-at <iso> --dry-run --json
|
|
68
|
+
choosefire visual dataset --plan <plan-id> --kind overview --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The five `workspace` operations are a narrow account HTTP facade: initialize, snapshot, summary, activity, and fact record. They use the workspace bearer only, validate every request and response against the checked-in contract, never retry mutations, and never fall back to the legacy token or local files. When a mutation outcome is unknown, first read the latest snapshot and then explicitly retry the exact serialized body with the original idempotency key to recover the receipt-first outcome. Never generate a new key for that recovery attempt. The JSON error includes this exact recovery material and action.
|
|
72
|
+
|
|
73
|
+
Existing legacy plan write commands still default to dry-run unless `--apply` is passed. For CLI and MCP sources, `--expected-updated-at` should be provided to avoid overwriting newer data.
|
|
74
|
+
|
|
75
|
+
## Development
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pnpm dev -- plan list --json
|
|
79
|
+
pnpm typecheck
|
|
80
|
+
pnpm build
|
|
81
|
+
pnpm test
|
|
82
|
+
pnpm contract:choosefire-workspace:check
|
|
83
|
+
```
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contractId": "choosefire-family-wealth.v2",
|
|
3
|
+
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"builtinAi": "unavailable",
|
|
6
|
+
"capabilityId": "household.initialize",
|
|
7
|
+
"cliPath": "household init",
|
|
8
|
+
"commandOrQuery": "workspace.initialize.v2",
|
|
9
|
+
"fixtureIds": [
|
|
10
|
+
"CFW-FIX-009"
|
|
11
|
+
],
|
|
12
|
+
"mcpSurface": "unavailable (R1 MCP is read-only)",
|
|
13
|
+
"milestone": "R1",
|
|
14
|
+
"requiredRole": "owner",
|
|
15
|
+
"riskLevel": "L1",
|
|
16
|
+
"status": "web",
|
|
17
|
+
"storyIds": [
|
|
18
|
+
"ONBOARD-01",
|
|
19
|
+
"CHANNEL-01"
|
|
20
|
+
],
|
|
21
|
+
"webPath": "/app"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"builtinAi": "read",
|
|
25
|
+
"capabilityId": "household.summary",
|
|
26
|
+
"cliPath": "household summary",
|
|
27
|
+
"commandOrQuery": "workspace.summary.v2",
|
|
28
|
+
"fixtureIds": [
|
|
29
|
+
"CFW-FIX-009"
|
|
30
|
+
],
|
|
31
|
+
"mcpSurface": "choosefire://workspace/metadata",
|
|
32
|
+
"milestone": "R1",
|
|
33
|
+
"requiredRole": "owner_or_viewer",
|
|
34
|
+
"riskLevel": "L0",
|
|
35
|
+
"status": "parity",
|
|
36
|
+
"storyIds": [
|
|
37
|
+
"OVERVIEW-01",
|
|
38
|
+
"CHANNEL-01"
|
|
39
|
+
],
|
|
40
|
+
"webPath": "/app"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"builtinAi": "read",
|
|
44
|
+
"capabilityId": "activity.list",
|
|
45
|
+
"cliPath": "activity list",
|
|
46
|
+
"commandOrQuery": "activity.page.v2",
|
|
47
|
+
"fixtureIds": [
|
|
48
|
+
"CFW-FIX-007",
|
|
49
|
+
"CFW-FIX-009"
|
|
50
|
+
],
|
|
51
|
+
"mcpSurface": "unavailable (metadata advertises activity.page.v2)",
|
|
52
|
+
"milestone": "R1",
|
|
53
|
+
"requiredRole": "owner_or_viewer",
|
|
54
|
+
"riskLevel": "L0",
|
|
55
|
+
"status": "web",
|
|
56
|
+
"storyIds": [
|
|
57
|
+
"CHANNEL-01",
|
|
58
|
+
"SHARE-01"
|
|
59
|
+
],
|
|
60
|
+
"webPath": "/app#activity"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"builtinAi": "unavailable",
|
|
64
|
+
"capabilityId": "asset.account.manage",
|
|
65
|
+
"cliPath": "wealth account-create|account-update|account-archive",
|
|
66
|
+
"commandOrQuery": "asset_account.create|update|archive.v2",
|
|
67
|
+
"fixtureIds": [
|
|
68
|
+
"CFW-FIX-001",
|
|
69
|
+
"CFW-FIX-005"
|
|
70
|
+
],
|
|
71
|
+
"mcpSurface": "unavailable (R2 MCP is read-only)",
|
|
72
|
+
"milestone": "R2",
|
|
73
|
+
"requiredRole": "owner",
|
|
74
|
+
"riskLevel": "L2",
|
|
75
|
+
"status": "web",
|
|
76
|
+
"storyIds": [
|
|
77
|
+
"CAPTURE-01",
|
|
78
|
+
"ONBOARD-01"
|
|
79
|
+
],
|
|
80
|
+
"webPath": "/app#assets"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"builtinAi": "unavailable",
|
|
84
|
+
"capabilityId": "valuation.append",
|
|
85
|
+
"cliPath": "wealth valuation-append",
|
|
86
|
+
"commandOrQuery": "valuation_snapshot.append.v2",
|
|
87
|
+
"fixtureIds": [
|
|
88
|
+
"CFW-FIX-001",
|
|
89
|
+
"CFW-FIX-002"
|
|
90
|
+
],
|
|
91
|
+
"mcpSurface": "unavailable (R2 MCP is read-only)",
|
|
92
|
+
"milestone": "R2",
|
|
93
|
+
"requiredRole": "owner",
|
|
94
|
+
"riskLevel": "L1",
|
|
95
|
+
"status": "web",
|
|
96
|
+
"storyIds": [
|
|
97
|
+
"CAPTURE-01",
|
|
98
|
+
"TRACK-01"
|
|
99
|
+
],
|
|
100
|
+
"webPath": "/app#assets"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"builtinAi": "unavailable",
|
|
104
|
+
"capabilityId": "classification.replace",
|
|
105
|
+
"cliPath": "wealth classify",
|
|
106
|
+
"commandOrQuery": "classification.replace.v2",
|
|
107
|
+
"fixtureIds": [
|
|
108
|
+
"CFW-FIX-005"
|
|
109
|
+
],
|
|
110
|
+
"mcpSurface": "unavailable (R2 MCP is read-only)",
|
|
111
|
+
"milestone": "R2",
|
|
112
|
+
"requiredRole": "owner",
|
|
113
|
+
"riskLevel": "L2",
|
|
114
|
+
"status": "web",
|
|
115
|
+
"storyIds": [
|
|
116
|
+
"CAPTURE-01",
|
|
117
|
+
"OVERVIEW-01"
|
|
118
|
+
],
|
|
119
|
+
"webPath": "/app#assets"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"builtinAi": "propose",
|
|
123
|
+
"capabilityId": "purpose.manage",
|
|
124
|
+
"cliPath": "purpose create|allocate",
|
|
125
|
+
"commandOrQuery": "purpose_bucket.commands.v2",
|
|
126
|
+
"fixtureIds": [
|
|
127
|
+
"CFW-FIX-005"
|
|
128
|
+
],
|
|
129
|
+
"mcpSurface": "choosefire.purpose.*",
|
|
130
|
+
"milestone": "R5",
|
|
131
|
+
"requiredRole": "owner",
|
|
132
|
+
"riskLevel": "L2",
|
|
133
|
+
"status": "absent",
|
|
134
|
+
"storyIds": [
|
|
135
|
+
"GOAL-01",
|
|
136
|
+
"OVERVIEW-01"
|
|
137
|
+
],
|
|
138
|
+
"webPath": "/app/plan"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"builtinAi": "read",
|
|
142
|
+
"capabilityId": "overview.read",
|
|
143
|
+
"cliPath": "wealth overview",
|
|
144
|
+
"commandOrQuery": "workspace.overview.v2",
|
|
145
|
+
"fixtureIds": [
|
|
146
|
+
"CFW-FIX-005",
|
|
147
|
+
"CFW-FIX-007",
|
|
148
|
+
"CFW-FIX-009"
|
|
149
|
+
],
|
|
150
|
+
"mcpSurface": "choosefire://workspace/overview|portfolio-tree|data-quality",
|
|
151
|
+
"milestone": "R2",
|
|
152
|
+
"requiredRole": "owner_or_viewer",
|
|
153
|
+
"riskLevel": "L0",
|
|
154
|
+
"status": "parity",
|
|
155
|
+
"storyIds": [
|
|
156
|
+
"OVERVIEW-01",
|
|
157
|
+
"CHANNEL-01"
|
|
158
|
+
],
|
|
159
|
+
"webPath": "/app"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"builtinAi": "apply_with_confirmation",
|
|
163
|
+
"capabilityId": "holding.manage",
|
|
164
|
+
"cliPath": "holding create|update|archive",
|
|
165
|
+
"commandOrQuery": "holding.commands.v2",
|
|
166
|
+
"fixtureIds": [
|
|
167
|
+
"CFW-FIX-003"
|
|
168
|
+
],
|
|
169
|
+
"mcpSurface": "choosefire.holding.*",
|
|
170
|
+
"milestone": "R3",
|
|
171
|
+
"requiredRole": "owner",
|
|
172
|
+
"riskLevel": "L2",
|
|
173
|
+
"status": "absent",
|
|
174
|
+
"storyIds": [
|
|
175
|
+
"CAPTURE-01"
|
|
176
|
+
],
|
|
177
|
+
"webPath": "/app/assets/:id"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"builtinAi": "apply_with_confirmation",
|
|
181
|
+
"capabilityId": "transaction.record",
|
|
182
|
+
"cliPath": "transaction record",
|
|
183
|
+
"commandOrQuery": "transaction.record.v2",
|
|
184
|
+
"fixtureIds": [
|
|
185
|
+
"CFW-FIX-003"
|
|
186
|
+
],
|
|
187
|
+
"mcpSurface": "choosefire.transaction.record",
|
|
188
|
+
"milestone": "R3",
|
|
189
|
+
"requiredRole": "owner",
|
|
190
|
+
"riskLevel": "L1",
|
|
191
|
+
"status": "absent",
|
|
192
|
+
"storyIds": [
|
|
193
|
+
"CAPTURE-01",
|
|
194
|
+
"TRACK-01"
|
|
195
|
+
],
|
|
196
|
+
"webPath": "/app/assets/:id"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"builtinAi": "apply_with_confirmation",
|
|
200
|
+
"capabilityId": "cash_flow.record",
|
|
201
|
+
"cliPath": "transaction cash-flow",
|
|
202
|
+
"commandOrQuery": "external_cash_flow.record.v2",
|
|
203
|
+
"fixtureIds": [
|
|
204
|
+
"CFW-FIX-002"
|
|
205
|
+
],
|
|
206
|
+
"mcpSurface": "choosefire.cashFlow.record",
|
|
207
|
+
"milestone": "R3",
|
|
208
|
+
"requiredRole": "owner",
|
|
209
|
+
"riskLevel": "L1",
|
|
210
|
+
"status": "absent",
|
|
211
|
+
"storyIds": [
|
|
212
|
+
"CAPTURE-01",
|
|
213
|
+
"PERFORMANCE-01"
|
|
214
|
+
],
|
|
215
|
+
"webPath": "/app/assets/:id"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"builtinAi": "propose",
|
|
219
|
+
"capabilityId": "import.apply",
|
|
220
|
+
"cliPath": "import inspect|preview|submit|apply",
|
|
221
|
+
"commandOrQuery": "import_batch.commands.v2",
|
|
222
|
+
"fixtureIds": [
|
|
223
|
+
"CFW-FIX-008"
|
|
224
|
+
],
|
|
225
|
+
"mcpSurface": "choosefire.import.*",
|
|
226
|
+
"milestone": "R3",
|
|
227
|
+
"requiredRole": "owner",
|
|
228
|
+
"riskLevel": "L2",
|
|
229
|
+
"status": "absent",
|
|
230
|
+
"storyIds": [
|
|
231
|
+
"IMPORT-01",
|
|
232
|
+
"ONBOARD-01"
|
|
233
|
+
],
|
|
234
|
+
"webPath": "/app/import"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"builtinAi": "propose",
|
|
238
|
+
"capabilityId": "ai.capture",
|
|
239
|
+
"cliPath": "candidate list|decide",
|
|
240
|
+
"commandOrQuery": "capture_candidate.commands.v2",
|
|
241
|
+
"fixtureIds": [
|
|
242
|
+
"CFW-FIX-009"
|
|
243
|
+
],
|
|
244
|
+
"mcpSurface": "choosefire.capture.propose",
|
|
245
|
+
"milestone": "R3",
|
|
246
|
+
"requiredRole": "owner",
|
|
247
|
+
"riskLevel": "L2",
|
|
248
|
+
"status": "absent",
|
|
249
|
+
"storyIds": [
|
|
250
|
+
"AI-01",
|
|
251
|
+
"ONBOARD-01"
|
|
252
|
+
],
|
|
253
|
+
"webPath": "/app/ai"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"builtinAi": "read",
|
|
257
|
+
"capabilityId": "performance.read",
|
|
258
|
+
"cliPath": "performance show",
|
|
259
|
+
"commandOrQuery": "performance.period.v2",
|
|
260
|
+
"fixtureIds": [
|
|
261
|
+
"CFW-FIX-001",
|
|
262
|
+
"CFW-FIX-002",
|
|
263
|
+
"CFW-FIX-003",
|
|
264
|
+
"CFW-FIX-004"
|
|
265
|
+
],
|
|
266
|
+
"mcpSurface": "choosefire.performance.get",
|
|
267
|
+
"milestone": "R4",
|
|
268
|
+
"requiredRole": "owner_or_viewer",
|
|
269
|
+
"riskLevel": "L0",
|
|
270
|
+
"status": "absent",
|
|
271
|
+
"storyIds": [
|
|
272
|
+
"PERFORMANCE-01",
|
|
273
|
+
"TRACK-01"
|
|
274
|
+
],
|
|
275
|
+
"webPath": "/app/performance"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"builtinAi": "read",
|
|
279
|
+
"capabilityId": "performance.gaps",
|
|
280
|
+
"cliPath": "performance gaps",
|
|
281
|
+
"commandOrQuery": "performance.gaps.v2",
|
|
282
|
+
"fixtureIds": [
|
|
283
|
+
"CFW-FIX-002",
|
|
284
|
+
"CFW-FIX-003"
|
|
285
|
+
],
|
|
286
|
+
"mcpSurface": "choosefire://performance/gaps",
|
|
287
|
+
"milestone": "R4",
|
|
288
|
+
"requiredRole": "owner",
|
|
289
|
+
"riskLevel": "L0",
|
|
290
|
+
"status": "absent",
|
|
291
|
+
"storyIds": [
|
|
292
|
+
"PERFORMANCE-01"
|
|
293
|
+
],
|
|
294
|
+
"webPath": "/app/performance"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"builtinAi": "propose",
|
|
298
|
+
"capabilityId": "goal.manage",
|
|
299
|
+
"cliPath": "goal create|update|retire",
|
|
300
|
+
"commandOrQuery": "financial_goal.commands.v2",
|
|
301
|
+
"fixtureIds": [
|
|
302
|
+
"CFW-FIX-006"
|
|
303
|
+
],
|
|
304
|
+
"mcpSurface": "choosefire.goal.*",
|
|
305
|
+
"milestone": "R5",
|
|
306
|
+
"requiredRole": "owner",
|
|
307
|
+
"riskLevel": "L2",
|
|
308
|
+
"status": "absent",
|
|
309
|
+
"storyIds": [
|
|
310
|
+
"GOAL-01"
|
|
311
|
+
],
|
|
312
|
+
"webPath": "/app/plan"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"builtinAi": "read",
|
|
316
|
+
"capabilityId": "scenario.compare",
|
|
317
|
+
"cliPath": "plan scenario compare",
|
|
318
|
+
"commandOrQuery": "plan.compare.v2",
|
|
319
|
+
"fixtureIds": [
|
|
320
|
+
"CFW-FIX-006"
|
|
321
|
+
],
|
|
322
|
+
"mcpSurface": "choosefire.plan.compare",
|
|
323
|
+
"milestone": "R5",
|
|
324
|
+
"requiredRole": "owner_or_viewer",
|
|
325
|
+
"riskLevel": "L0",
|
|
326
|
+
"status": "absent",
|
|
327
|
+
"storyIds": [
|
|
328
|
+
"PLAN-01"
|
|
329
|
+
],
|
|
330
|
+
"webPath": "/app/plan/scenarios"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"builtinAi": "unavailable",
|
|
334
|
+
"capabilityId": "plan.confirm",
|
|
335
|
+
"cliPath": "plan scenario confirm",
|
|
336
|
+
"commandOrQuery": "wealth_plan.confirm.v2",
|
|
337
|
+
"fixtureIds": [
|
|
338
|
+
"CFW-FIX-006"
|
|
339
|
+
],
|
|
340
|
+
"mcpSurface": "choosefire.plan.confirm",
|
|
341
|
+
"milestone": "R5",
|
|
342
|
+
"requiredRole": "owner",
|
|
343
|
+
"riskLevel": "L3",
|
|
344
|
+
"status": "absent",
|
|
345
|
+
"storyIds": [
|
|
346
|
+
"PLAN-01",
|
|
347
|
+
"TRACK-01"
|
|
348
|
+
],
|
|
349
|
+
"webPath": "/app/plan"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"builtinAi": "propose",
|
|
353
|
+
"capabilityId": "research.run",
|
|
354
|
+
"cliPath": "research start|refresh",
|
|
355
|
+
"commandOrQuery": "research_run.commands.v2",
|
|
356
|
+
"fixtureIds": [
|
|
357
|
+
"CFW-FIX-006"
|
|
358
|
+
],
|
|
359
|
+
"mcpSurface": "choosefire.research.*",
|
|
360
|
+
"milestone": "R6",
|
|
361
|
+
"requiredRole": "owner",
|
|
362
|
+
"riskLevel": "L2",
|
|
363
|
+
"status": "absent",
|
|
364
|
+
"storyIds": [
|
|
365
|
+
"RESEARCH-01"
|
|
366
|
+
],
|
|
367
|
+
"webPath": "/app/plan/research"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"builtinAi": "unavailable",
|
|
371
|
+
"capabilityId": "proposal.review",
|
|
372
|
+
"cliPath": "proposal decide|confirm",
|
|
373
|
+
"commandOrQuery": "allocation_proposal.commands.v2",
|
|
374
|
+
"fixtureIds": [
|
|
375
|
+
"CFW-FIX-006"
|
|
376
|
+
],
|
|
377
|
+
"mcpSurface": "choosefire.proposal.*",
|
|
378
|
+
"milestone": "R6",
|
|
379
|
+
"requiredRole": "owner",
|
|
380
|
+
"riskLevel": "L3",
|
|
381
|
+
"status": "absent",
|
|
382
|
+
"storyIds": [
|
|
383
|
+
"PROPOSAL-01"
|
|
384
|
+
],
|
|
385
|
+
"webPath": "/app/plan/proposals/:id"
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"builtinAi": "unavailable",
|
|
389
|
+
"capabilityId": "household.invite",
|
|
390
|
+
"cliPath": "household invite|remove",
|
|
391
|
+
"commandOrQuery": "household_invite.commands.v2",
|
|
392
|
+
"fixtureIds": [
|
|
393
|
+
"CFW-FIX-007"
|
|
394
|
+
],
|
|
395
|
+
"mcpSurface": "choosefire.household.*",
|
|
396
|
+
"milestone": "R7",
|
|
397
|
+
"requiredRole": "owner",
|
|
398
|
+
"riskLevel": "L3",
|
|
399
|
+
"status": "absent",
|
|
400
|
+
"storyIds": [
|
|
401
|
+
"SHARE-01"
|
|
402
|
+
],
|
|
403
|
+
"webPath": "/app/household"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"builtinAi": "propose",
|
|
407
|
+
"capabilityId": "suggestion.manage",
|
|
408
|
+
"cliPath": "suggestion submit|decide",
|
|
409
|
+
"commandOrQuery": "member_suggestion.commands.v2",
|
|
410
|
+
"fixtureIds": [
|
|
411
|
+
"CFW-FIX-007"
|
|
412
|
+
],
|
|
413
|
+
"mcpSurface": "choosefire.suggestion.*",
|
|
414
|
+
"milestone": "R7",
|
|
415
|
+
"requiredRole": "owner_or_viewer",
|
|
416
|
+
"riskLevel": "L2",
|
|
417
|
+
"status": "absent",
|
|
418
|
+
"storyIds": [
|
|
419
|
+
"SHARE-01"
|
|
420
|
+
],
|
|
421
|
+
"webPath": "/app/pending"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"builtinAi": "unavailable",
|
|
425
|
+
"capabilityId": "review.complete",
|
|
426
|
+
"cliPath": "review prepare|complete",
|
|
427
|
+
"commandOrQuery": "review.commands.v2",
|
|
428
|
+
"fixtureIds": [
|
|
429
|
+
"CFW-FIX-001",
|
|
430
|
+
"CFW-FIX-002",
|
|
431
|
+
"CFW-FIX-003"
|
|
432
|
+
],
|
|
433
|
+
"mcpSurface": "choosefire.review.*",
|
|
434
|
+
"milestone": "R8",
|
|
435
|
+
"requiredRole": "owner",
|
|
436
|
+
"riskLevel": "L3",
|
|
437
|
+
"status": "absent",
|
|
438
|
+
"storyIds": [
|
|
439
|
+
"REVIEW-01"
|
|
440
|
+
],
|
|
441
|
+
"webPath": "/app/reviews"
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"builtinAi": "unavailable",
|
|
445
|
+
"capabilityId": "legacy.migrate",
|
|
446
|
+
"cliPath": "migration preview|activate",
|
|
447
|
+
"commandOrQuery": "legacy_migration.commands.v2",
|
|
448
|
+
"fixtureIds": [
|
|
449
|
+
"CFW-FIX-010"
|
|
450
|
+
],
|
|
451
|
+
"mcpSurface": "choosefire.migration.*",
|
|
452
|
+
"milestone": "R8",
|
|
453
|
+
"requiredRole": "owner",
|
|
454
|
+
"riskLevel": "L3",
|
|
455
|
+
"status": "absent",
|
|
456
|
+
"storyIds": [
|
|
457
|
+
"IMPORT-01",
|
|
458
|
+
"CHANNEL-01"
|
|
459
|
+
],
|
|
460
|
+
"webPath": "/app/import/migration"
|
|
461
|
+
}
|
|
462
|
+
],
|
|
463
|
+
"kind": "choosefire_family_wealth_capability_matrix.v1"
|
|
464
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"calculationVersion": "performance.v1",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"caseId": "PERF-L1-001",
|
|
6
|
+
"expected": {
|
|
7
|
+
"balanceChange": "30000.00",
|
|
8
|
+
"estimatedProfit": null,
|
|
9
|
+
"level": "balance_change",
|
|
10
|
+
"moneyWeightedReturn": null,
|
|
11
|
+
"qualifiers": [
|
|
12
|
+
"not_investment_return"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"fixtureId": "CFW-FIX-001",
|
|
16
|
+
"input": {
|
|
17
|
+
"beginningValue": "500000.00",
|
|
18
|
+
"endingValue": "530000.00",
|
|
19
|
+
"externalCashFlows": null
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"caseId": "PERF-L2-001",
|
|
24
|
+
"expected": {
|
|
25
|
+
"assumptions": [
|
|
26
|
+
"midpoint_cashflow_assumption"
|
|
27
|
+
],
|
|
28
|
+
"balanceChange": "15000.00",
|
|
29
|
+
"dietzDenominator": "105000.00",
|
|
30
|
+
"estimatedProfit": "5000.00",
|
|
31
|
+
"level": "estimated_return",
|
|
32
|
+
"moneyWeightedReturn": "0.047619047619"
|
|
33
|
+
},
|
|
34
|
+
"fixtureId": "CFW-FIX-002",
|
|
35
|
+
"input": {
|
|
36
|
+
"beginningValue": "100000.00",
|
|
37
|
+
"endingValue": "115000.00",
|
|
38
|
+
"externalCashFlows": [
|
|
39
|
+
{
|
|
40
|
+
"amount": "10000.00",
|
|
41
|
+
"weight": "0.50000000"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"caseId": "PERF-L3-COVERAGE-001",
|
|
48
|
+
"expectedCoverage": {
|
|
49
|
+
"assumptions": [],
|
|
50
|
+
"calculationVersion": "performance.v1",
|
|
51
|
+
"eligibleMetrics": [
|
|
52
|
+
"money_weighted_return"
|
|
53
|
+
],
|
|
54
|
+
"level": "detailed_performance",
|
|
55
|
+
"unavailableMetrics": [
|
|
56
|
+
{
|
|
57
|
+
"metric": "time_weighted_return",
|
|
58
|
+
"reason": "boundary_valuation_missing"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"warnings": [
|
|
62
|
+
"r0_contract_only"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"expectedResult": null,
|
|
66
|
+
"fixtureId": "CFW-FIX-003",
|
|
67
|
+
"input": {
|
|
68
|
+
"missingEvidence": [
|
|
69
|
+
"external_flow_boundary_valuation"
|
|
70
|
+
],
|
|
71
|
+
"requestedMetrics": [
|
|
72
|
+
"money_weighted_return",
|
|
73
|
+
"time_weighted_return"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"kind": "choosefire_performance_golden_fixtures.v1"
|
|
79
|
+
}
|