maybeai-sheet-cli 0.4.1__tar.gz → 0.6.0__tar.gz
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.
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/PKG-INFO +38 -153
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/README.md +37 -152
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/import_engine_local_report.html +74 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_import_auto.json +479 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_import_mixed_forced.json +0 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_list_worksheets.json +355 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_read_detail_A1_T5.json +549 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/summary.json +79 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/yunling_import_auto.json +602 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/yunling_list_worksheets.json +598 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/yunling_read_T00_A1_F5.json +343 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/import_auto.json +587 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/list_worksheets.json +112 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/merged_two_tables_report.html +12 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/read_merged_1_A1_T5.json +373 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/read_merged_2_A1_T5.json +373 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/summary.json +145 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/pyproject.toml +1 -1
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/__init__.py +1 -1
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/cli.py +1 -2
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/db_table.py +156 -5
- maybeai_sheet_cli-0.6.0/src/maybeai_sheet/commands/excel_worksheet.py +333 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/workbook.py +56 -7
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/endpoints.py +4 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_cli.py +82 -6
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_endpoints.py +4 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_phase2_cli.py +5 -5
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_two_engine_cli.py +206 -4
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/uv.lock +1 -1
- maybeai_sheet_cli-0.4.1/src/maybeai_sheet/commands/excel_worksheet.py +0 -111
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/.claude/settings.local.json +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/.gitignore +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/CLAUDE.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/cli-packaging-plan.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/cli-plan.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/agent-friendly-command-tree.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/operation-plan-cli-no-dsl-plan.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-agent-friendly-command-tree.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-agent-friendly-phase-2-routes.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-agent-friendly-phase-2.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-be-new-backend-contracts-plan.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-deferred-table-routing-plan.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-excel-worksheet-multi-table-plan.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-two-engine-command-refactor.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/2026-07-01-mbs-deferred-routing-e2e-report.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/2026-07-01-phase1-test-review.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/2026-07-01-phase2-test-review.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-130317-excel-table-empty-range-e2e.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-130447-excel-table-empty-range-e2e.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-130556-excel-table-empty-range-e2e.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-230803-local-cli-endpoint-verification.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-232511-local7011-cli-table-metadata-verification.html +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/e2e-payloads-20260701-130317.json +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/e2e-payloads-20260701-130447.json +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/e2e-payloads-20260701-130556.json +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/multi-table-empty-range-20260701-130317.xlsx +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/openpyxl-multi-table-empty-range-20260701-130447.xlsx +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/docs/verification-matrix-fallback.md +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/client.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/__init__.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/_phase2.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/cell.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/column.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/excel_table.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/file.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/formula.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/history.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/range.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/raw.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/row.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/share.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/sheet.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/style.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/table.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/worksheet.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/config.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/errors.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/formatters.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/__init__.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/share.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/sheet.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/workbook.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/options.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/protocol.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/resolver.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/table_resolver.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/update.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_formatters.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_resolver.py +0 -0
- {maybeai_sheet_cli-0.4.1 → maybeai_sheet_cli-0.6.0}/tests/test_update.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: maybeai-sheet-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: CLI for common MaybeAI spreadsheet operations
|
|
5
5
|
Project-URL: Homepage, https://github.com/OmniMCP-AI/maybeai-sheet-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/OmniMCP-AI/maybeai-sheet-cli
|
|
@@ -90,8 +90,7 @@ Optional global flags:
|
|
|
90
90
|
|
|
91
91
|
## Quick Start
|
|
92
92
|
|
|
93
|
-
The examples below follow the target protocol names.
|
|
94
|
-
compatibility aliases are listed in the Implemented Command Tree.
|
|
93
|
+
The examples below follow the target protocol names.
|
|
95
94
|
|
|
96
95
|
List user-visible workbooks:
|
|
97
96
|
|
|
@@ -99,10 +98,11 @@ List user-visible workbooks:
|
|
|
99
98
|
mbs workbook list-user-workbooks --limit 20
|
|
100
99
|
```
|
|
101
100
|
|
|
102
|
-
Read a
|
|
101
|
+
Read a worksheet:
|
|
103
102
|
|
|
104
103
|
```bash
|
|
105
|
-
mbs excel-worksheet
|
|
104
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Sheet1
|
|
105
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Sheet1 --range A1:H1
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
List worksheets:
|
|
@@ -135,6 +135,13 @@ Import a large table-like `.xlsx` into SheetTable/PG:
|
|
|
135
135
|
mbs workbook import ./large-table.xlsx --engine postgres
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
+
Import a mixed workbook and let the backend select engines per worksheet:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
mbs workbook import ./mixed-workbook.xlsx --engine auto
|
|
142
|
+
mbs workbook import ./mixed-workbook.xlsx --engine "postgres,excel,excel,postgres"
|
|
143
|
+
```
|
|
144
|
+
|
|
138
145
|
Append rows and verify:
|
|
139
146
|
|
|
140
147
|
```bash
|
|
@@ -176,131 +183,13 @@ CLI command names normalize these relationship labels to hyphenated groups:
|
|
|
176
183
|
`excel_worksheet` becomes `excel-worksheet`, `excel_table` becomes
|
|
177
184
|
`excel-table`, and `db_worksheet(db_table)` becomes `db-table`.
|
|
178
185
|
|
|
179
|
-
## Implemented Command Tree
|
|
180
|
-
|
|
181
|
-
This is the current shipped command surface. The full roadmap tree below is
|
|
182
|
-
separate and includes planned or deferred commands.
|
|
183
|
-
|
|
184
|
-
```text
|
|
185
|
-
mbs
|
|
186
|
-
├── update
|
|
187
|
-
│ └── Update maybeai-sheet-cli from PyPI.
|
|
188
|
-
│
|
|
189
|
-
├── workbook
|
|
190
|
-
│ ├── create Create a new workbook.
|
|
191
|
-
│ ├── create-from-file Import an .xlsx file.
|
|
192
|
-
│ ├── import Preferred alias for create-from-file.
|
|
193
|
-
│ ├── metadata Inspect workbook profile and routing metadata.
|
|
194
|
-
│ ├── list-user-workbooks
|
|
195
|
-
│ │ Preferred alias for bounded user workbook listing.
|
|
196
|
-
│ ├── list-worksheets List worksheets in a workbook.
|
|
197
|
-
│ ├── list List user workbooks with bounded output.
|
|
198
|
-
│ ├── search Search user workbooks with bounded output.
|
|
199
|
-
│ ├── manifest Compatibility alias for metadata.
|
|
200
|
-
│ └── capabilities Inspect workbook capability/profile metadata.
|
|
201
|
-
│
|
|
202
|
-
├── excel-worksheet
|
|
203
|
-
│ ├── metadata Inspect worksheet metadata through workbook profile.
|
|
204
|
-
│ └── list-table List worksheet/table metadata for a workbook.
|
|
205
|
-
│
|
|
206
|
-
├── excel-table
|
|
207
|
-
│ ├── metadata Resolve a worksheet-backed table from workbook metadata.
|
|
208
|
-
│ ├── schema Infer schema from a resolved worksheet-backed table range.
|
|
209
|
-
│ ├── sample Return bounded table sample rows.
|
|
210
|
-
│ ├── read Read a resolved worksheet-backed table range.
|
|
211
|
-
│ └── insert Insert row objects into a worksheet-backed table.
|
|
212
|
-
│
|
|
213
|
-
├── db-table
|
|
214
|
-
│ ├── metadata Resolve PG/SheetTable-backed worksheet metadata.
|
|
215
|
-
│ ├── schema Infer schema from a bounded PG read.
|
|
216
|
-
│ ├── sample Return bounded PG table sample rows.
|
|
217
|
-
│ ├── read Read PG-backed table rows through routed APIs.
|
|
218
|
-
│ └── insert Insert rows into a PG-backed table.
|
|
219
|
-
│
|
|
220
|
-
├── worksheet
|
|
221
|
-
│ ├── list List worksheets in a workbook.
|
|
222
|
-
│ ├── create Create a worksheet, optionally with starter values.
|
|
223
|
-
│ ├── rename Rename a worksheet.
|
|
224
|
-
│ ├── delete Delete a worksheet; requires --yes unless --dry-run.
|
|
225
|
-
│ ├── copy Copy a worksheet.
|
|
226
|
-
│ └── move Move a worksheet to a zero-based index.
|
|
227
|
-
│
|
|
228
|
-
├── range
|
|
229
|
-
│ ├── read Read a bounded A1 range.
|
|
230
|
-
│ ├── write Write a JSON matrix into an A1 range.
|
|
231
|
-
│ ├── clear Clear an A1 range.
|
|
232
|
-
│ └── search Search a worksheet with bounded results.
|
|
233
|
-
│
|
|
234
|
-
├── row
|
|
235
|
-
│ ├── insert Insert rows.
|
|
236
|
-
│ ├── delete Delete rows; requires --yes unless --dry-run.
|
|
237
|
-
│ └── move Move rows.
|
|
238
|
-
│
|
|
239
|
-
├── column
|
|
240
|
-
│ ├── insert Insert columns.
|
|
241
|
-
│ ├── delete Delete columns; requires --yes unless --dry-run.
|
|
242
|
-
│ ├── move Move columns.
|
|
243
|
-
│ └── width Set column width.
|
|
244
|
-
│
|
|
245
|
-
├── formula
|
|
246
|
-
│ ├── read Read formulas with FORMULA render mode.
|
|
247
|
-
│ ├── set Set one formula cell.
|
|
248
|
-
│ ├── batch-set Set formula ranges from a JSON operations file.
|
|
249
|
-
│ ├── recalculate Recalculate formulas for a worksheet/workbook.
|
|
250
|
-
│ ├── calculate Calculate one formula cell.
|
|
251
|
-
│ └── lineage Trace formula lineage for one cell.
|
|
252
|
-
│
|
|
253
|
-
├── style
|
|
254
|
-
│ ├── freeze-panes Freeze rows/columns using an A1 cell boundary.
|
|
255
|
-
│ ├── auto-filter set Set worksheet auto-filter range.
|
|
256
|
-
│ ├── auto-filter remove Remove worksheet auto-filter.
|
|
257
|
-
│ ├── columns-width Set column widths.
|
|
258
|
-
│ └── rows-height Set row heights.
|
|
259
|
-
│
|
|
260
|
-
├── history
|
|
261
|
-
│ ├── list List workbook versions with bounded output.
|
|
262
|
-
│ └── read Read a workbook version.
|
|
263
|
-
│
|
|
264
|
-
├── file
|
|
265
|
-
│ ├── export Export workbook bytes to --out.
|
|
266
|
-
│ ├── list List files with bounded output.
|
|
267
|
-
│ └── search Search files with bounded output.
|
|
268
|
-
│
|
|
269
|
-
├── share
|
|
270
|
-
│ ├── visibility Set workbook visibility.
|
|
271
|
-
│ ├── grant Grant a user permission.
|
|
272
|
-
│ ├── permission Read current permission.
|
|
273
|
-
│ ├── remove Remove a user's access.
|
|
274
|
-
│ └── list List sharing entries.
|
|
275
|
-
│
|
|
276
|
-
├── raw
|
|
277
|
-
│ └── post Low-level POST escape hatch for routed API paths.
|
|
278
|
-
│
|
|
279
|
-
└── sheet Legacy compatibility aliases.
|
|
280
|
-
├── read
|
|
281
|
-
├── read-range
|
|
282
|
-
├── read-many
|
|
283
|
-
├── named-range
|
|
284
|
-
├── headers
|
|
285
|
-
├── worksheets
|
|
286
|
-
├── formulas
|
|
287
|
-
├── write-range
|
|
288
|
-
├── clear-range
|
|
289
|
-
├── append
|
|
290
|
-
├── upsert
|
|
291
|
-
├── formula-set
|
|
292
|
-
├── formula-batch-set
|
|
293
|
-
├── recalculate
|
|
294
|
-
└── create-worksheet
|
|
295
|
-
```
|
|
296
186
|
|
|
297
187
|
## Full Command Tree
|
|
298
188
|
|
|
299
189
|
The reviewed tree below is the source of truth for the protocol shape. Product
|
|
300
190
|
model labels in this block use underscores; CLI names in examples and future
|
|
301
191
|
router code should normalize them to hyphenated command groups such as
|
|
302
|
-
`excel-worksheet`, `excel-table`, and `db-table`.
|
|
303
|
-
commands remain available as compatibility aliases. This tree includes
|
|
192
|
+
`excel-worksheet`, `excel-table`, and `db-table`. This tree includes
|
|
304
193
|
implemented, planned, deferred, and not-recommended command surfaces.
|
|
305
194
|
|
|
306
195
|
Status legend for the full tree:
|
|
@@ -336,6 +225,7 @@ mbs
|
|
|
336
225
|
│ └── rename API Rename a stored file.
|
|
337
226
|
│
|
|
338
227
|
├── excel_worksheet
|
|
228
|
+
│ ├── read API Read the full range of the worksheet.
|
|
339
229
|
│ ├── list-table API List worksheets in a workbook.
|
|
340
230
|
│ ├── create API Create a worksheet, optionally with starter values.
|
|
341
231
|
│ ├── update API Update worksheet metadata.
|
|
@@ -369,9 +259,9 @@ mbs
|
|
|
369
259
|
| |- lineage API Trace cell/range lineage.
|
|
370
260
|
│
|
|
371
261
|
├── db_worksheet(AKA db_table)
|
|
372
|
-
│ ├── create
|
|
373
|
-
│ ├── update
|
|
374
|
-
│ ├── delete
|
|
262
|
+
│ ├── create PLAN Create a PG-backed table from JSON row data.
|
|
263
|
+
│ ├── update PLAN Update PG-backed rows from JSON row data.
|
|
264
|
+
│ ├── delete PLAN Delete PG-backed rows/table; requires --yes unless --dry-run.
|
|
375
265
|
│ ├── schema API Infer table schema from a bounded PG read.
|
|
376
266
|
│ ├── sample API Return bounded table sample rows.
|
|
377
267
|
│ ├── read API Read PG-backed table rows.
|
|
@@ -434,24 +324,6 @@ mbs
|
|
|
434
324
|
│ ├── create API Create or grant sharing access.
|
|
435
325
|
│ ├── remove API Remove a user's access.
|
|
436
326
|
│ ├── modify API Modify sharing access.
|
|
437
|
-
│
|
|
438
|
-
│
|
|
439
|
-
└── sheet Legacy compatibility aliases.
|
|
440
|
-
├── read
|
|
441
|
-
├── read-range
|
|
442
|
-
├── read-many
|
|
443
|
-
├── named-range
|
|
444
|
-
├── headers
|
|
445
|
-
├── worksheets
|
|
446
|
-
├── formulas
|
|
447
|
-
├── write-range
|
|
448
|
-
├── clear-range
|
|
449
|
-
├── append
|
|
450
|
-
├── upsert
|
|
451
|
-
├── formula-set
|
|
452
|
-
├── formula-batch-set
|
|
453
|
-
├── recalculate
|
|
454
|
-
└── create-worksheet
|
|
455
327
|
```
|
|
456
328
|
|
|
457
329
|
Full tree examples:
|
|
@@ -474,13 +346,15 @@ mbs workbook copy --doc-id abc123 --name "Budget Copy" # API
|
|
|
474
346
|
mbs workbook delete --doc-id abc123 --dry-run # API
|
|
475
347
|
|
|
476
348
|
# excel-worksheet
|
|
349
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Actuals # API
|
|
350
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Actuals --range A1:D20 # API
|
|
477
351
|
mbs excel-worksheet create --doc-id abc123 --name Actuals # API
|
|
478
352
|
mbs excel-worksheet update --doc-id abc123 --worksheet-name Actuals --title "Actuals FY26" # API
|
|
479
353
|
mbs excel-worksheet metadata --doc-id abc123 --worksheet-name Actuals # API
|
|
480
354
|
mbs excel-worksheet sample --doc-id abc123 --worksheet-name Actuals --range A1:Z5000 --limit 50 # PLAN
|
|
481
355
|
|
|
482
356
|
# excel-worksheet range
|
|
483
|
-
mbs excel-worksheet range read --doc-id abc123 --worksheet-name Actuals --range A1:D20 # API
|
|
357
|
+
mbs excel-worksheet range read --doc-id abc123 --worksheet-name Actuals --range A1:D20 # API, advanced structured alias
|
|
484
358
|
mbs excel-worksheet range used-range --doc-id abc123 --worksheet-name Actuals # PLAN
|
|
485
359
|
mbs excel-worksheet range lineage --doc-id abc123 --worksheet-name Model --cell E2 --format tree # API
|
|
486
360
|
|
|
@@ -496,8 +370,17 @@ mbs excel-table style columns-width --doc-id abc123 --worksheet-name Orders --ta
|
|
|
496
370
|
mbs db-table metadata --doc-id abc123 --name orders-large # API
|
|
497
371
|
mbs db-table schema --doc-id abc123 --name orders-large # API
|
|
498
372
|
mbs db-table sample --doc-id abc123 --name orders-large --limit 50 # API
|
|
499
|
-
mbs db-table read --doc-id abc123 --name orders-large --limit
|
|
373
|
+
mbs db-table read --doc-id abc123 --name orders-large --limit 100 --offset 200 # API
|
|
500
374
|
mbs db-table insert --doc-id abc123 --name orders-large --rows rows.json # API
|
|
375
|
+
mbs db-table create --doc-id abc123 --name Orders --rows orders.json # PLAN
|
|
376
|
+
mbs db-table update --doc-id abc123 --name Orders --key order_id --rows orders_patch.json # PLAN
|
|
377
|
+
mbs db-table update --doc-id abc123 --name Orders --row-index 42 --rows row_patch.json # PLAN
|
|
378
|
+
mbs db-table update --doc-id abc123 --name Orders --where '{"status":"open"}' --rows status_patch.json # PLAN
|
|
379
|
+
mbs db-table update --doc-id abc123 --name Orders --column-index 3 --column-name status # PLAN
|
|
380
|
+
mbs db-table delete --doc-id abc123 --name Orders --where '{"order_id":"A1"}' --yes # PLAN
|
|
381
|
+
mbs db-table delete --doc-id abc123 --name Orders --row-index 42 --count 10 --yes # PLAN
|
|
382
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-index 3 --yes # PLAN
|
|
383
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-name status --yes # PLAN
|
|
501
384
|
|
|
502
385
|
# row
|
|
503
386
|
mbs excel-worksheet row insert --doc-id abc123 --worksheet-name Actuals --row 10 --count 2 # API
|
|
@@ -535,11 +418,13 @@ mbs version restore --doc-id abc123 --version-id v42 --dry-run # PLAN
|
|
|
535
418
|
|
|
536
419
|
# share
|
|
537
420
|
mbs share create --doc-id abc123 --email teammate@example.com --role viewer # API
|
|
538
|
-
|
|
539
|
-
# sheet
|
|
540
|
-
mbs sheet read --doc-id abc123 --worksheet-name Sheet1 --range A1:D20
|
|
541
421
|
```
|
|
542
422
|
|
|
423
|
+
`db-table read`, `schema`, and `sample` keep reads bounded. The default read
|
|
424
|
+
limit is 100 rows, and `--limit` / `--offset` are capped at 10,000 to avoid
|
|
425
|
+
accidental large PG scans. Use a keyset-style backend contract for deeper
|
|
426
|
+
pagination when it becomes available.
|
|
427
|
+
|
|
543
428
|
Refactor planning is tracked separately from this README:
|
|
544
429
|
`docs/superpowers/plans/2026-07-01-mbs-two-engine-command-refactor.md`.
|
|
545
430
|
|
|
@@ -561,8 +446,8 @@ dependency graph beyond cell lineage PLAN
|
|
|
561
446
|
Relationship guide:
|
|
562
447
|
|
|
563
448
|
- Use `workbook` for file-level creation, upload/import, and manifest checks.
|
|
564
|
-
- Use `excel-worksheet` for
|
|
565
|
-
|
|
449
|
+
- Use `excel-worksheet read` for full worksheet used-range inspection.
|
|
450
|
+
- Use `excel-worksheet` for Excel tab lifecycle operations.
|
|
566
451
|
- Use `excel-worksheet range` for coordinate-based reads, writes, formulas, and
|
|
567
452
|
cell lineage.
|
|
568
453
|
- Use `excel-table` for worksheet-backed table views. One Excel worksheet can
|
|
@@ -597,7 +482,7 @@ Targeting notes:
|
|
|
597
482
|
from workbook metadata, for example `--table-id 1`, and maps internally to
|
|
598
483
|
table metadata such as `worksheet_name` and `range`.
|
|
599
484
|
- Use `--name` or backend ids when operating on a `db-table`.
|
|
600
|
-
- Use `--gid` only
|
|
485
|
+
- Use `--gid` only when a route specifically requires gid targeting.
|
|
601
486
|
|
|
602
487
|
## Input Rules
|
|
603
488
|
|
|
@@ -66,8 +66,7 @@ Optional global flags:
|
|
|
66
66
|
|
|
67
67
|
## Quick Start
|
|
68
68
|
|
|
69
|
-
The examples below follow the target protocol names.
|
|
70
|
-
compatibility aliases are listed in the Implemented Command Tree.
|
|
69
|
+
The examples below follow the target protocol names.
|
|
71
70
|
|
|
72
71
|
List user-visible workbooks:
|
|
73
72
|
|
|
@@ -75,10 +74,11 @@ List user-visible workbooks:
|
|
|
75
74
|
mbs workbook list-user-workbooks --limit 20
|
|
76
75
|
```
|
|
77
76
|
|
|
78
|
-
Read a
|
|
77
|
+
Read a worksheet:
|
|
79
78
|
|
|
80
79
|
```bash
|
|
81
|
-
mbs excel-worksheet
|
|
80
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Sheet1
|
|
81
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Sheet1 --range A1:H1
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
List worksheets:
|
|
@@ -111,6 +111,13 @@ Import a large table-like `.xlsx` into SheetTable/PG:
|
|
|
111
111
|
mbs workbook import ./large-table.xlsx --engine postgres
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
+
Import a mixed workbook and let the backend select engines per worksheet:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
mbs workbook import ./mixed-workbook.xlsx --engine auto
|
|
118
|
+
mbs workbook import ./mixed-workbook.xlsx --engine "postgres,excel,excel,postgres"
|
|
119
|
+
```
|
|
120
|
+
|
|
114
121
|
Append rows and verify:
|
|
115
122
|
|
|
116
123
|
```bash
|
|
@@ -152,131 +159,13 @@ CLI command names normalize these relationship labels to hyphenated groups:
|
|
|
152
159
|
`excel_worksheet` becomes `excel-worksheet`, `excel_table` becomes
|
|
153
160
|
`excel-table`, and `db_worksheet(db_table)` becomes `db-table`.
|
|
154
161
|
|
|
155
|
-
## Implemented Command Tree
|
|
156
|
-
|
|
157
|
-
This is the current shipped command surface. The full roadmap tree below is
|
|
158
|
-
separate and includes planned or deferred commands.
|
|
159
|
-
|
|
160
|
-
```text
|
|
161
|
-
mbs
|
|
162
|
-
├── update
|
|
163
|
-
│ └── Update maybeai-sheet-cli from PyPI.
|
|
164
|
-
│
|
|
165
|
-
├── workbook
|
|
166
|
-
│ ├── create Create a new workbook.
|
|
167
|
-
│ ├── create-from-file Import an .xlsx file.
|
|
168
|
-
│ ├── import Preferred alias for create-from-file.
|
|
169
|
-
│ ├── metadata Inspect workbook profile and routing metadata.
|
|
170
|
-
│ ├── list-user-workbooks
|
|
171
|
-
│ │ Preferred alias for bounded user workbook listing.
|
|
172
|
-
│ ├── list-worksheets List worksheets in a workbook.
|
|
173
|
-
│ ├── list List user workbooks with bounded output.
|
|
174
|
-
│ ├── search Search user workbooks with bounded output.
|
|
175
|
-
│ ├── manifest Compatibility alias for metadata.
|
|
176
|
-
│ └── capabilities Inspect workbook capability/profile metadata.
|
|
177
|
-
│
|
|
178
|
-
├── excel-worksheet
|
|
179
|
-
│ ├── metadata Inspect worksheet metadata through workbook profile.
|
|
180
|
-
│ └── list-table List worksheet/table metadata for a workbook.
|
|
181
|
-
│
|
|
182
|
-
├── excel-table
|
|
183
|
-
│ ├── metadata Resolve a worksheet-backed table from workbook metadata.
|
|
184
|
-
│ ├── schema Infer schema from a resolved worksheet-backed table range.
|
|
185
|
-
│ ├── sample Return bounded table sample rows.
|
|
186
|
-
│ ├── read Read a resolved worksheet-backed table range.
|
|
187
|
-
│ └── insert Insert row objects into a worksheet-backed table.
|
|
188
|
-
│
|
|
189
|
-
├── db-table
|
|
190
|
-
│ ├── metadata Resolve PG/SheetTable-backed worksheet metadata.
|
|
191
|
-
│ ├── schema Infer schema from a bounded PG read.
|
|
192
|
-
│ ├── sample Return bounded PG table sample rows.
|
|
193
|
-
│ ├── read Read PG-backed table rows through routed APIs.
|
|
194
|
-
│ └── insert Insert rows into a PG-backed table.
|
|
195
|
-
│
|
|
196
|
-
├── worksheet
|
|
197
|
-
│ ├── list List worksheets in a workbook.
|
|
198
|
-
│ ├── create Create a worksheet, optionally with starter values.
|
|
199
|
-
│ ├── rename Rename a worksheet.
|
|
200
|
-
│ ├── delete Delete a worksheet; requires --yes unless --dry-run.
|
|
201
|
-
│ ├── copy Copy a worksheet.
|
|
202
|
-
│ └── move Move a worksheet to a zero-based index.
|
|
203
|
-
│
|
|
204
|
-
├── range
|
|
205
|
-
│ ├── read Read a bounded A1 range.
|
|
206
|
-
│ ├── write Write a JSON matrix into an A1 range.
|
|
207
|
-
│ ├── clear Clear an A1 range.
|
|
208
|
-
│ └── search Search a worksheet with bounded results.
|
|
209
|
-
│
|
|
210
|
-
├── row
|
|
211
|
-
│ ├── insert Insert rows.
|
|
212
|
-
│ ├── delete Delete rows; requires --yes unless --dry-run.
|
|
213
|
-
│ └── move Move rows.
|
|
214
|
-
│
|
|
215
|
-
├── column
|
|
216
|
-
│ ├── insert Insert columns.
|
|
217
|
-
│ ├── delete Delete columns; requires --yes unless --dry-run.
|
|
218
|
-
│ ├── move Move columns.
|
|
219
|
-
│ └── width Set column width.
|
|
220
|
-
│
|
|
221
|
-
├── formula
|
|
222
|
-
│ ├── read Read formulas with FORMULA render mode.
|
|
223
|
-
│ ├── set Set one formula cell.
|
|
224
|
-
│ ├── batch-set Set formula ranges from a JSON operations file.
|
|
225
|
-
│ ├── recalculate Recalculate formulas for a worksheet/workbook.
|
|
226
|
-
│ ├── calculate Calculate one formula cell.
|
|
227
|
-
│ └── lineage Trace formula lineage for one cell.
|
|
228
|
-
│
|
|
229
|
-
├── style
|
|
230
|
-
│ ├── freeze-panes Freeze rows/columns using an A1 cell boundary.
|
|
231
|
-
│ ├── auto-filter set Set worksheet auto-filter range.
|
|
232
|
-
│ ├── auto-filter remove Remove worksheet auto-filter.
|
|
233
|
-
│ ├── columns-width Set column widths.
|
|
234
|
-
│ └── rows-height Set row heights.
|
|
235
|
-
│
|
|
236
|
-
├── history
|
|
237
|
-
│ ├── list List workbook versions with bounded output.
|
|
238
|
-
│ └── read Read a workbook version.
|
|
239
|
-
│
|
|
240
|
-
├── file
|
|
241
|
-
│ ├── export Export workbook bytes to --out.
|
|
242
|
-
│ ├── list List files with bounded output.
|
|
243
|
-
│ └── search Search files with bounded output.
|
|
244
|
-
│
|
|
245
|
-
├── share
|
|
246
|
-
│ ├── visibility Set workbook visibility.
|
|
247
|
-
│ ├── grant Grant a user permission.
|
|
248
|
-
│ ├── permission Read current permission.
|
|
249
|
-
│ ├── remove Remove a user's access.
|
|
250
|
-
│ └── list List sharing entries.
|
|
251
|
-
│
|
|
252
|
-
├── raw
|
|
253
|
-
│ └── post Low-level POST escape hatch for routed API paths.
|
|
254
|
-
│
|
|
255
|
-
└── sheet Legacy compatibility aliases.
|
|
256
|
-
├── read
|
|
257
|
-
├── read-range
|
|
258
|
-
├── read-many
|
|
259
|
-
├── named-range
|
|
260
|
-
├── headers
|
|
261
|
-
├── worksheets
|
|
262
|
-
├── formulas
|
|
263
|
-
├── write-range
|
|
264
|
-
├── clear-range
|
|
265
|
-
├── append
|
|
266
|
-
├── upsert
|
|
267
|
-
├── formula-set
|
|
268
|
-
├── formula-batch-set
|
|
269
|
-
├── recalculate
|
|
270
|
-
└── create-worksheet
|
|
271
|
-
```
|
|
272
162
|
|
|
273
163
|
## Full Command Tree
|
|
274
164
|
|
|
275
165
|
The reviewed tree below is the source of truth for the protocol shape. Product
|
|
276
166
|
model labels in this block use underscores; CLI names in examples and future
|
|
277
167
|
router code should normalize them to hyphenated command groups such as
|
|
278
|
-
`excel-worksheet`, `excel-table`, and `db-table`.
|
|
279
|
-
commands remain available as compatibility aliases. This tree includes
|
|
168
|
+
`excel-worksheet`, `excel-table`, and `db-table`. This tree includes
|
|
280
169
|
implemented, planned, deferred, and not-recommended command surfaces.
|
|
281
170
|
|
|
282
171
|
Status legend for the full tree:
|
|
@@ -312,6 +201,7 @@ mbs
|
|
|
312
201
|
│ └── rename API Rename a stored file.
|
|
313
202
|
│
|
|
314
203
|
├── excel_worksheet
|
|
204
|
+
│ ├── read API Read the full range of the worksheet.
|
|
315
205
|
│ ├── list-table API List worksheets in a workbook.
|
|
316
206
|
│ ├── create API Create a worksheet, optionally with starter values.
|
|
317
207
|
│ ├── update API Update worksheet metadata.
|
|
@@ -345,9 +235,9 @@ mbs
|
|
|
345
235
|
| |- lineage API Trace cell/range lineage.
|
|
346
236
|
│
|
|
347
237
|
├── db_worksheet(AKA db_table)
|
|
348
|
-
│ ├── create
|
|
349
|
-
│ ├── update
|
|
350
|
-
│ ├── delete
|
|
238
|
+
│ ├── create PLAN Create a PG-backed table from JSON row data.
|
|
239
|
+
│ ├── update PLAN Update PG-backed rows from JSON row data.
|
|
240
|
+
│ ├── delete PLAN Delete PG-backed rows/table; requires --yes unless --dry-run.
|
|
351
241
|
│ ├── schema API Infer table schema from a bounded PG read.
|
|
352
242
|
│ ├── sample API Return bounded table sample rows.
|
|
353
243
|
│ ├── read API Read PG-backed table rows.
|
|
@@ -410,24 +300,6 @@ mbs
|
|
|
410
300
|
│ ├── create API Create or grant sharing access.
|
|
411
301
|
│ ├── remove API Remove a user's access.
|
|
412
302
|
│ ├── modify API Modify sharing access.
|
|
413
|
-
│
|
|
414
|
-
│
|
|
415
|
-
└── sheet Legacy compatibility aliases.
|
|
416
|
-
├── read
|
|
417
|
-
├── read-range
|
|
418
|
-
├── read-many
|
|
419
|
-
├── named-range
|
|
420
|
-
├── headers
|
|
421
|
-
├── worksheets
|
|
422
|
-
├── formulas
|
|
423
|
-
├── write-range
|
|
424
|
-
├── clear-range
|
|
425
|
-
├── append
|
|
426
|
-
├── upsert
|
|
427
|
-
├── formula-set
|
|
428
|
-
├── formula-batch-set
|
|
429
|
-
├── recalculate
|
|
430
|
-
└── create-worksheet
|
|
431
303
|
```
|
|
432
304
|
|
|
433
305
|
Full tree examples:
|
|
@@ -450,13 +322,15 @@ mbs workbook copy --doc-id abc123 --name "Budget Copy" # API
|
|
|
450
322
|
mbs workbook delete --doc-id abc123 --dry-run # API
|
|
451
323
|
|
|
452
324
|
# excel-worksheet
|
|
325
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Actuals # API
|
|
326
|
+
mbs excel-worksheet read --doc-id abc123 --worksheet-name Actuals --range A1:D20 # API
|
|
453
327
|
mbs excel-worksheet create --doc-id abc123 --name Actuals # API
|
|
454
328
|
mbs excel-worksheet update --doc-id abc123 --worksheet-name Actuals --title "Actuals FY26" # API
|
|
455
329
|
mbs excel-worksheet metadata --doc-id abc123 --worksheet-name Actuals # API
|
|
456
330
|
mbs excel-worksheet sample --doc-id abc123 --worksheet-name Actuals --range A1:Z5000 --limit 50 # PLAN
|
|
457
331
|
|
|
458
332
|
# excel-worksheet range
|
|
459
|
-
mbs excel-worksheet range read --doc-id abc123 --worksheet-name Actuals --range A1:D20 # API
|
|
333
|
+
mbs excel-worksheet range read --doc-id abc123 --worksheet-name Actuals --range A1:D20 # API, advanced structured alias
|
|
460
334
|
mbs excel-worksheet range used-range --doc-id abc123 --worksheet-name Actuals # PLAN
|
|
461
335
|
mbs excel-worksheet range lineage --doc-id abc123 --worksheet-name Model --cell E2 --format tree # API
|
|
462
336
|
|
|
@@ -472,8 +346,17 @@ mbs excel-table style columns-width --doc-id abc123 --worksheet-name Orders --ta
|
|
|
472
346
|
mbs db-table metadata --doc-id abc123 --name orders-large # API
|
|
473
347
|
mbs db-table schema --doc-id abc123 --name orders-large # API
|
|
474
348
|
mbs db-table sample --doc-id abc123 --name orders-large --limit 50 # API
|
|
475
|
-
mbs db-table read --doc-id abc123 --name orders-large --limit
|
|
349
|
+
mbs db-table read --doc-id abc123 --name orders-large --limit 100 --offset 200 # API
|
|
476
350
|
mbs db-table insert --doc-id abc123 --name orders-large --rows rows.json # API
|
|
351
|
+
mbs db-table create --doc-id abc123 --name Orders --rows orders.json # PLAN
|
|
352
|
+
mbs db-table update --doc-id abc123 --name Orders --key order_id --rows orders_patch.json # PLAN
|
|
353
|
+
mbs db-table update --doc-id abc123 --name Orders --row-index 42 --rows row_patch.json # PLAN
|
|
354
|
+
mbs db-table update --doc-id abc123 --name Orders --where '{"status":"open"}' --rows status_patch.json # PLAN
|
|
355
|
+
mbs db-table update --doc-id abc123 --name Orders --column-index 3 --column-name status # PLAN
|
|
356
|
+
mbs db-table delete --doc-id abc123 --name Orders --where '{"order_id":"A1"}' --yes # PLAN
|
|
357
|
+
mbs db-table delete --doc-id abc123 --name Orders --row-index 42 --count 10 --yes # PLAN
|
|
358
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-index 3 --yes # PLAN
|
|
359
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-name status --yes # PLAN
|
|
477
360
|
|
|
478
361
|
# row
|
|
479
362
|
mbs excel-worksheet row insert --doc-id abc123 --worksheet-name Actuals --row 10 --count 2 # API
|
|
@@ -511,11 +394,13 @@ mbs version restore --doc-id abc123 --version-id v42 --dry-run # PLAN
|
|
|
511
394
|
|
|
512
395
|
# share
|
|
513
396
|
mbs share create --doc-id abc123 --email teammate@example.com --role viewer # API
|
|
514
|
-
|
|
515
|
-
# sheet
|
|
516
|
-
mbs sheet read --doc-id abc123 --worksheet-name Sheet1 --range A1:D20
|
|
517
397
|
```
|
|
518
398
|
|
|
399
|
+
`db-table read`, `schema`, and `sample` keep reads bounded. The default read
|
|
400
|
+
limit is 100 rows, and `--limit` / `--offset` are capped at 10,000 to avoid
|
|
401
|
+
accidental large PG scans. Use a keyset-style backend contract for deeper
|
|
402
|
+
pagination when it becomes available.
|
|
403
|
+
|
|
519
404
|
Refactor planning is tracked separately from this README:
|
|
520
405
|
`docs/superpowers/plans/2026-07-01-mbs-two-engine-command-refactor.md`.
|
|
521
406
|
|
|
@@ -537,8 +422,8 @@ dependency graph beyond cell lineage PLAN
|
|
|
537
422
|
Relationship guide:
|
|
538
423
|
|
|
539
424
|
- Use `workbook` for file-level creation, upload/import, and manifest checks.
|
|
540
|
-
- Use `excel-worksheet` for
|
|
541
|
-
|
|
425
|
+
- Use `excel-worksheet read` for full worksheet used-range inspection.
|
|
426
|
+
- Use `excel-worksheet` for Excel tab lifecycle operations.
|
|
542
427
|
- Use `excel-worksheet range` for coordinate-based reads, writes, formulas, and
|
|
543
428
|
cell lineage.
|
|
544
429
|
- Use `excel-table` for worksheet-backed table views. One Excel worksheet can
|
|
@@ -573,7 +458,7 @@ Targeting notes:
|
|
|
573
458
|
from workbook metadata, for example `--table-id 1`, and maps internally to
|
|
574
459
|
table metadata such as `worksheet_name` and `range`.
|
|
575
460
|
- Use `--name` or backend ids when operating on a `db-table`.
|
|
576
|
-
- Use `--gid` only
|
|
461
|
+
- Use `--gid` only when a route specifically requires gid targeting.
|
|
577
462
|
|
|
578
463
|
## Input Rules
|
|
579
464
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>本地导入引擎验证报告</title>
|
|
6
|
+
<style>
|
|
7
|
+
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin:24px;color:#111827;line-height:1.45}
|
|
8
|
+
h1{font-size:24px} h2{font-size:18px;margin-top:28px}
|
|
9
|
+
table{border-collapse:collapse;width:100%;font-size:13px}th,td{border:1px solid #d1d5db;padding:6px;text-align:left;vertical-align:top}th{background:#f3f4f6}
|
|
10
|
+
.status-pass{color:#166534;background:#dcfce7;font-weight:700}.status-fail{color:#991b1b;background:#fee2e2;font-weight:700}.status-warn,.status-skip{color:#92400e;background:#fef3c7;font-weight:700}
|
|
11
|
+
code,pre{background:#f3f4f6;padding:2px 4px;border-radius:4px}pre{padding:12px;overflow:auto}
|
|
12
|
+
.human-needed{border-left:4px solid #d97706;padding-left:12px;background:#fffbeb}
|
|
13
|
+
</style>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<h1>本地导入引擎验证报告</h1>
|
|
17
|
+
<p>运行时间:2026-07-02T15:20:29</p>
|
|
18
|
+
<p>API base:<code>http://localhost:7011</code></p>
|
|
19
|
+
<p>提交版本:maybeai-sheet-cli <code>a988277</code>,play-be <code>76ec7f4</code>,SheetTable <code>2cafe2c</code></p>
|
|
20
|
+
<p>结果汇总:PASS=2,FAIL=0,WARN=1,SKIP=0</p>
|
|
21
|
+
<h2>MaybeSheet URL</h2>
|
|
22
|
+
<ul><li><a href="http://localhost:3003/docs/spreadsheets/d/6a460e52e6feec692aa2b7ee">http://localhost:3003/docs/spreadsheets/d/6a460e52e6feec692aa2b7ee</a></li><li><a href="http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2">http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2</a></li></ul>
|
|
23
|
+
<h2>流程</h2>
|
|
24
|
+
<div class="mermaid">flowchart LR
|
|
25
|
+
CLI[mbs CLI] --> Play[play-be /api/v1/excel/import]
|
|
26
|
+
Play --> Auto{engine=auto}
|
|
27
|
+
Auto -->|layout/report| Excelize[excelize-mcp]
|
|
28
|
+
Auto -->|forced pg worksheets| SheetTable[SheetTable]
|
|
29
|
+
SheetTable --> PG[(PostgreSQL typed tables)]
|
|
30
|
+
Play --> Response[JSON response]
|
|
31
|
+
Response --> Report[本地 HTML 报告]
|
|
32
|
+
classDef excelize fill:#dbeafe,stroke:#2563eb,color:#111827;
|
|
33
|
+
classDef pg fill:#dcfce7,stroke:#16a34a,color:#111827;
|
|
34
|
+
classDef warn fill:#fef3c7,stroke:#d97706,color:#111827;
|
|
35
|
+
class Excelize excelize;
|
|
36
|
+
class SheetTable,PG pg;
|
|
37
|
+
class Auto warn;
|
|
38
|
+
</div>
|
|
39
|
+
<pre>flowchart LR
|
|
40
|
+
CLI[mbs CLI] --> Play[play-be /api/v1/excel/import]
|
|
41
|
+
Play --> Auto{engine=auto}
|
|
42
|
+
Auto -->|layout/report| Excelize[excelize-mcp]
|
|
43
|
+
Auto -->|forced pg worksheets| SheetTable[SheetTable]
|
|
44
|
+
SheetTable --> PG[(PostgreSQL typed tables)]
|
|
45
|
+
Play --> Response[JSON response]
|
|
46
|
+
Response --> Report[本地 HTML 报告]
|
|
47
|
+
classDef excelize fill:#dbeafe,stroke:#2563eb,color:#111827;
|
|
48
|
+
classDef pg fill:#dcfce7,stroke:#16a34a,color:#111827;
|
|
49
|
+
classDef warn fill:#fef3c7,stroke:#d97706,color:#111827;
|
|
50
|
+
class Excelize excelize;
|
|
51
|
+
class SheetTable,PG pg;
|
|
52
|
+
class Auto warn;
|
|
53
|
+
</pre>
|
|
54
|
+
<h2>对比结果</h2>
|
|
55
|
+
<table><thead><tr><th>类别</th><th>用例</th><th>来源文件</th><th>document_id</th><th>MaybeSheet URL</th><th>期望引擎</th><th>实际引擎</th><th>worksheet_engines</th><th>top-level selected_engine</th><th>preprocess</th><th>list 数量</th><th>read 检查</th><th>结果</th><th>备注</th></tr></thead><tbody><tr><td>auto import</td><td>yunling auto import</td><td>~/Downloads/yunling_v4_20sheet.xlsx</td><td>6a460e52e6feec692aa2b7ee</td><td>http://localhost:3003/docs/spreadsheets/d/6a460e52e6feec692aa2b7ee</td><td>excelize</td><td>excelize</td><td>excelize:21</td><td>absent</td><td>0</td><td>21</td><td>PASS</td><td class="status-pass">PASS</td><td>响应仅保留 top-level engine;每个 worksheet_engines 保留 requested_engine/selected_engine。</td></tr><tr><td>auto import</td><td>llm_cost auto import</td><td>~/Downloads/llm_cost_stats_2026_05_export.xlsx</td><td>6a460e59e6feec692aa2b7f2</td><td>http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2</td><td>excelize</td><td>excelize</td><td>excelize:12</td><td>absent</td><td>0</td><td>12</td><td>PASS</td><td class="status-pass">PASS</td><td>响应仅保留 top-level engine;每个 worksheet_engines 保留 requested_engine/selected_engine。</td></tr><tr><td>forced mixed import</td><td>llm_cost forced excelize+postgres list</td><td>~/Downloads/llm_cost_stats_2026_05_export.xlsx</td><td>n/a</td><td>n/a</td><td>composite</td><td>timeout</td><td>SheetTable 日志显示 PG typed writes 已执行;CLI 600s 内未收到 play-be 响应,随后仍在 post-import sync。</td><td>unknown</td><td>observed in SheetTable typed writes</td><td>n/a</td><td>SKIP</td><td class="status-warn">WARN</td><td>命令 --engine "excelize,postgres,..." 触发 PG typed materialization,但 600s 内未返回响应;临时服务关闭时 play-be 记录 SheetTable import failed/server disconnected。需要进一步查 mixed response/registry completion 与 post-import sync 耗时。</td></tr></tbody></table>
|
|
56
|
+
<h2>响应结构检查</h2>
|
|
57
|
+
<ul>
|
|
58
|
+
<li><code>yunling_v4_20sheet.xlsx</code> auto 响应 top-level <code>selected_engine</code>:absent</li>
|
|
59
|
+
<li><code>llm_cost_stats_2026_05_export.xlsx</code> auto 响应 top-level <code>selected_engine</code>:absent</li>
|
|
60
|
+
<li>两个成功响应都保留 <code>engine</code> 和 per-worksheet <code>worksheet_engines[].requested_engine/selected_engine</code>。</li>
|
|
61
|
+
</ul>
|
|
62
|
+
<h2>覆盖率</h2>
|
|
63
|
+
<table><thead><tr><th>区域</th><th>已覆盖</th><th>总数</th><th>百分比</th><th>未覆盖/备注</th></tr></thead><tbody>
|
|
64
|
+
<tr><td>auto import</td><td>2</td><td>2</td><td>100%</td><td>layout/report 与 large workbook</td></tr>
|
|
65
|
+
<tr><td>list worksheets</td><td>2</td><td>2</td><td>100%</td><td>均通过 CLI routed API</td></tr>
|
|
66
|
+
<tr><td>range read</td><td>2</td><td>2</td><td>100%</td><td>均返回样例数据</td></tr>
|
|
67
|
+
<tr><td>forced mixed route</td><td>0</td><td>1</td><td>0%</td><td>SheetTable 完成 typed writes,但 play-be/CLI 响应超时</td></tr>
|
|
68
|
+
</tbody></table>
|
|
69
|
+
<section class="human-needed"><h2>需要人工核验</h2>
|
|
70
|
+
<p>打开上面的 localhost MaybeSheet URL,确认 UI 可以加载对应工作簿。自动化已经验证 import/list/read API;UI 渲染不在本次 CLI 自动检查范围内。</p>
|
|
71
|
+
</section>
|
|
72
|
+
<h2>原始证据文件</h2><p>目录:<code>docs/superpowers/reports/import-engine-local-20260702-150800</code></p><ul><li><code>llm_cost_import_auto.json</code></li><li><code>llm_cost_import_mixed_forced.json</code></li><li><code>llm_cost_list_worksheets.json</code></li><li><code>llm_cost_read_detail_A1_T5.json</code></li><li><code>yunling_import_auto.json</code></li><li><code>yunling_list_worksheets.json</code></li><li><code>yunling_read_T00_A1_F5.json</code></li></ul>
|
|
73
|
+
<script type="module">import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs"; mermaid.initialize({startOnLoad:true, securityLevel:"strict"});</script>
|
|
74
|
+
</body></html>
|