gitsheets-axi 2.0.0 → 2.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.
Files changed (65) hide show
  1. package/dist/src/cli.d.ts +1 -1
  2. package/dist/src/cli.d.ts.map +1 -1
  3. package/dist/src/cli.js +17 -9
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/commands/count.d.ts +4 -0
  6. package/dist/src/commands/count.d.ts.map +1 -0
  7. package/dist/src/commands/count.js +84 -0
  8. package/dist/src/commands/count.js.map +1 -0
  9. package/dist/src/commands/delete.d.ts +1 -1
  10. package/dist/src/commands/delete.d.ts.map +1 -1
  11. package/dist/src/commands/delete.js +132 -43
  12. package/dist/src/commands/delete.js.map +1 -1
  13. package/dist/src/commands/distinct.d.ts +4 -0
  14. package/dist/src/commands/distinct.d.ts.map +1 -0
  15. package/dist/src/commands/distinct.js +81 -0
  16. package/dist/src/commands/distinct.js.map +1 -0
  17. package/dist/src/commands/home.js +2 -2
  18. package/dist/src/commands/home.js.map +1 -1
  19. package/dist/src/commands/patch.d.ts +1 -1
  20. package/dist/src/commands/patch.d.ts.map +1 -1
  21. package/dist/src/commands/patch.js +238 -49
  22. package/dist/src/commands/patch.js.map +1 -1
  23. package/dist/src/commands/query.d.ts +1 -1
  24. package/dist/src/commands/query.d.ts.map +1 -1
  25. package/dist/src/commands/query.js +129 -58
  26. package/dist/src/commands/query.js.map +1 -1
  27. package/dist/src/commands/rename.d.ts +4 -0
  28. package/dist/src/commands/rename.d.ts.map +1 -0
  29. package/dist/src/commands/rename.js +131 -0
  30. package/dist/src/commands/rename.js.map +1 -0
  31. package/dist/src/commands/sheets.js +15 -6
  32. package/dist/src/commands/sheets.js.map +1 -1
  33. package/dist/src/commands/upsert.d.ts +9 -1
  34. package/dist/src/commands/upsert.d.ts.map +1 -1
  35. package/dist/src/commands/upsert.js +134 -33
  36. package/dist/src/commands/upsert.js.map +1 -1
  37. package/dist/src/output/sheet-schema.d.ts +2 -3
  38. package/dist/src/output/sheet-schema.d.ts.map +1 -1
  39. package/dist/src/output/sheet-schema.js +3 -5
  40. package/dist/src/output/sheet-schema.js.map +1 -1
  41. package/dist/src/util/aggregate.d.ts +13 -0
  42. package/dist/src/util/aggregate.d.ts.map +1 -0
  43. package/dist/src/util/aggregate.js +44 -0
  44. package/dist/src/util/aggregate.js.map +1 -0
  45. package/dist/src/util/export-file.d.ts +22 -0
  46. package/dist/src/util/export-file.d.ts.map +1 -0
  47. package/dist/src/util/export-file.js +67 -0
  48. package/dist/src/util/export-file.js.map +1 -0
  49. package/dist/src/util/filter.d.ts +30 -0
  50. package/dist/src/util/filter.d.ts.map +1 -0
  51. package/dist/src/util/filter.js +138 -0
  52. package/dist/src/util/filter.js.map +1 -0
  53. package/dist/src/util/hints.d.ts +8 -0
  54. package/dist/src/util/hints.d.ts.map +1 -0
  55. package/dist/src/util/hints.js +8 -0
  56. package/dist/src/util/hints.js.map +1 -0
  57. package/dist/src/util/open-sheet.d.ts +13 -0
  58. package/dist/src/util/open-sheet.d.ts.map +1 -0
  59. package/dist/src/util/open-sheet.js +31 -0
  60. package/dist/src/util/open-sheet.js.map +1 -0
  61. package/dist/src/util/parse-records.d.ts +26 -0
  62. package/dist/src/util/parse-records.d.ts.map +1 -0
  63. package/dist/src/util/parse-records.js +76 -0
  64. package/dist/src/util/parse-records.js.map +1 -0
  65. package/package.json +3 -2
package/dist/src/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export declare const TOP_HELP = "usage: gitsheets-axi [command] [args] [flags]\ncommands[16]:\n (none)=home, sheets, query, read,\n upsert, patch, delete,\n check, diff, normalize,\n init, infer, migrate-config,\n attachment, push, setup\nflags[2]:\n --help, -v/-V/--version\nexamples:\n gitsheets-axi\n gitsheets-axi query users --filter status=active\n gitsheets-axi upsert users --data '{\"slug\":\"jane\",\"email\":\"jane@x.org\"}'\n gitsheets-axi patch users '{\"slug\":\"jane\"}' --patch '{\"name\":\"Jane\"}'\n gitsheets-axi check users users/jane.toml --fix\n gitsheets-axi diff posts HEAD~10\n gitsheets-axi normalize users\n gitsheets-axi init users\n gitsheets-axi infer users\n gitsheets-axi attachment list users jane\n gitsheets-axi push\n gitsheets-axi setup hooks\n";
1
+ export declare const TOP_HELP = "usage: gitsheets-axi [command] [args] [flags]\ncommands[19]:\n (none)=home, sheets, query, count,\n distinct, read, upsert, patch, rename,\n delete, check, diff, normalize,\n init, infer, migrate-config,\n attachment, push, setup\nflags[2]:\n --help, -v/-V/--version\nexamples:\n gitsheets-axi\n gitsheets-axi query repos --filter status=unclassified --sort pushed_at\n gitsheets-axi count repos --filter archived=true\n gitsheets-axi query repos --group-by target_team\n gitsheets-axi distinct repos disposition\n gitsheets-axi upsert users --data '{\"slug\":\"jane\",\"email\":\"jane@x.org\"}'\n gitsheets-axi patch users '{\"slug\":\"jane\"}' --patch '{\"name\":\"Jane\"}'\n gitsheets-axi check users users/jane.toml --fix\n gitsheets-axi diff posts HEAD~10\n gitsheets-axi attachment list users jane\n gitsheets-axi setup hooks\n";
2
2
  export declare function main(): Promise<void>;
3
3
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,QAAQ,mwBAsBpB,CAAC;AAwCF,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1C"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,QAAQ,u1BAqBpB,CAAC;AA8CF,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1C"}
package/dist/src/cli.js CHANGED
@@ -6,9 +6,12 @@ import { createContext } from './context.js';
6
6
  import { homeCommand } from './commands/home.js';
7
7
  import { sheetsCommand, SHEETS_HELP } from './commands/sheets.js';
8
8
  import { queryCommand, QUERY_HELP } from './commands/query.js';
9
+ import { countCommand, COUNT_HELP } from './commands/count.js';
10
+ import { distinctCommand, DISTINCT_HELP } from './commands/distinct.js';
9
11
  import { readCommand, READ_HELP } from './commands/read.js';
10
12
  import { upsertCommand, UPSERT_HELP } from './commands/upsert.js';
11
13
  import { patchCommand, PATCH_HELP } from './commands/patch.js';
14
+ import { renameCommand, RENAME_HELP } from './commands/rename.js';
12
15
  import { deleteCommand, DELETE_HELP } from './commands/delete.js';
13
16
  import { checkCommand, CHECK_HELP } from './commands/check.js';
14
17
  import { diffCommand, DIFF_HELP } from './commands/diff.js';
@@ -23,34 +26,36 @@ const DESCRIPTION = 'gitsheets — agent-facing interface for the git-backed doc
23
26
  'Token-efficient TOON output, idempotent mutations, format-aware schemas.';
24
27
  const VERSION = readPackageVersion();
25
28
  export const TOP_HELP = `usage: gitsheets-axi [command] [args] [flags]
26
- commands[16]:
27
- (none)=home, sheets, query, read,
28
- upsert, patch, delete,
29
- check, diff, normalize,
29
+ commands[19]:
30
+ (none)=home, sheets, query, count,
31
+ distinct, read, upsert, patch, rename,
32
+ delete, check, diff, normalize,
30
33
  init, infer, migrate-config,
31
34
  attachment, push, setup
32
35
  flags[2]:
33
36
  --help, -v/-V/--version
34
37
  examples:
35
38
  gitsheets-axi
36
- gitsheets-axi query users --filter status=active
39
+ gitsheets-axi query repos --filter status=unclassified --sort pushed_at
40
+ gitsheets-axi count repos --filter archived=true
41
+ gitsheets-axi query repos --group-by target_team
42
+ gitsheets-axi distinct repos disposition
37
43
  gitsheets-axi upsert users --data '{"slug":"jane","email":"jane@x.org"}'
38
44
  gitsheets-axi patch users '{"slug":"jane"}' --patch '{"name":"Jane"}'
39
45
  gitsheets-axi check users users/jane.toml --fix
40
46
  gitsheets-axi diff posts HEAD~10
41
- gitsheets-axi normalize users
42
- gitsheets-axi init users
43
- gitsheets-axi infer users
44
47
  gitsheets-axi attachment list users jane
45
- gitsheets-axi push
46
48
  gitsheets-axi setup hooks
47
49
  `;
48
50
  const COMMAND_HELP = {
49
51
  sheets: SHEETS_HELP,
50
52
  query: QUERY_HELP,
53
+ count: COUNT_HELP,
54
+ distinct: DISTINCT_HELP,
51
55
  read: READ_HELP,
52
56
  upsert: UPSERT_HELP,
53
57
  patch: PATCH_HELP,
58
+ rename: RENAME_HELP,
54
59
  delete: DELETE_HELP,
55
60
  check: CHECK_HELP,
56
61
  diff: DIFF_HELP,
@@ -65,9 +70,12 @@ const COMMAND_HELP = {
65
70
  const COMMANDS = {
66
71
  sheets: sheetsCommand,
67
72
  query: queryCommand,
73
+ count: countCommand,
74
+ distinct: distinctCommand,
68
75
  read: readCommand,
69
76
  upsert: upsertCommand,
70
77
  patch: patchCommand,
78
+ rename: renameCommand,
71
79
  delete: deleteCommand,
72
80
  check: checkCommand,
73
81
  diff: diffCommand,
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GitsheetsContext } from '../context.js';
2
+ export declare const COUNT_HELP = "usage: gitsheets-axi count <sheet> [--filter k=v ...] [--prefix p]\nflags[2]:\n --filter <expr> Filter clause (repeatable). k=v \u00B7 k!=v \u00B7 k<v \u00B7 k>v \u00B7\n k<=v \u00B7 k>=v \u00B7 k~regex \u00B7 \"k in (a,b)\" \u00B7 k:present \u00B7 k:empty\n --prefix <p> Tenant sub-tree scope\nexamples:\n gitsheets-axi count repos\n gitsheets-axi count repos --filter status=unclassified\n gitsheets-axi count repos --filter 'pushed_at<2022-01-01' --filter archived=false\nnote:\n With no --filter, counts candidate record paths without parsing (cheap).\n A filter scans body-less records and counts matches.\n";
3
+ export declare function countCommand(args: string[], ctx: GitsheetsContext): Promise<string>;
4
+ //# sourceMappingURL=count.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../src/commands/count.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMtD,eAAO,MAAM,UAAU,mpBAYtB,CAAC;AAuCF,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
@@ -0,0 +1,84 @@
1
+ import { AxiError } from 'axi-sdk-js';
2
+ import { translateError } from '../errors.js';
3
+ import { renderObject } from '../output/render.js';
4
+ import { openSheetForCommand } from '../util/open-sheet.js';
5
+ import { buildPredicate } from '../util/filter.js';
6
+ export const COUNT_HELP = `usage: gitsheets-axi count <sheet> [--filter k=v ...] [--prefix p]
7
+ flags[2]:
8
+ --filter <expr> Filter clause (repeatable). k=v · k!=v · k<v · k>v ·
9
+ k<=v · k>=v · k~regex · "k in (a,b)" · k:present · k:empty
10
+ --prefix <p> Tenant sub-tree scope
11
+ examples:
12
+ gitsheets-axi count repos
13
+ gitsheets-axi count repos --filter status=unclassified
14
+ gitsheets-axi count repos --filter 'pushed_at<2022-01-01' --filter archived=false
15
+ note:
16
+ With no --filter, counts candidate record paths without parsing (cheap).
17
+ A filter scans body-less records and counts matches.
18
+ `;
19
+ function parseCountFlags(args) {
20
+ const sheet = args[0];
21
+ if (!sheet || sheet.startsWith('-')) {
22
+ throw new AxiError('count requires a sheet name', 'VALIDATION_ERROR', [
23
+ 'Run `gitsheets-axi count <sheet>`',
24
+ ]);
25
+ }
26
+ const flags = { sheet, filters: [], prefix: undefined };
27
+ for (let i = 1; i < args.length; i++) {
28
+ const arg = args[i];
29
+ const next = args[i + 1];
30
+ switch (arg) {
31
+ case '--filter':
32
+ if (!next)
33
+ throw new AxiError('--filter expects an expression', 'VALIDATION_ERROR');
34
+ flags.filters.push(next);
35
+ i++;
36
+ break;
37
+ case '--prefix':
38
+ if (!next)
39
+ throw new AxiError('--prefix expects a path', 'VALIDATION_ERROR');
40
+ flags.prefix = next;
41
+ i++;
42
+ break;
43
+ default:
44
+ throw new AxiError(`Unknown flag: ${arg}`, 'VALIDATION_ERROR', [
45
+ 'Run `gitsheets-axi count --help`',
46
+ ]);
47
+ }
48
+ }
49
+ return flags;
50
+ }
51
+ export async function countCommand(args, ctx) {
52
+ if (args.length === 0 || (args.length === 1 && args[0] === '--help')) {
53
+ return COUNT_HELP;
54
+ }
55
+ const flags = parseCountFlags(args);
56
+ const repo = await ctx.repo();
57
+ const sheet = await openSheetForCommand(repo, flags.sheet, flags.prefix !== undefined ? { prefix: flags.prefix } : {});
58
+ // No filter → the cheap candidate-path count.
59
+ if (flags.filters.length === 0) {
60
+ try {
61
+ return renderObject({ sheet: flags.sheet, count: await sheet.count() });
62
+ }
63
+ catch (error) {
64
+ throw translateError(error);
65
+ }
66
+ }
67
+ // Filtered → scan body-less and count matches, reporting the total too.
68
+ const predicate = buildPredicate(flags.filters);
69
+ let matched = 0;
70
+ let total = 0;
71
+ try {
72
+ const records = await sheet.queryAll({}, { withBody: false });
73
+ total = records.length;
74
+ for (const r of records) {
75
+ if (predicate(r))
76
+ matched++;
77
+ }
78
+ }
79
+ catch (error) {
80
+ throw translateError(error);
81
+ }
82
+ return renderObject({ sheet: flags.sheet, count: matched, of: total });
83
+ }
84
+ //# sourceMappingURL=count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count.js","sourceRoot":"","sources":["../../../src/commands/count.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { GitsheetsContext } from '../context.js';
2
- export declare const DELETE_HELP = "usage: gitsheets-axi delete <sheet> <path> [--prefix p] [--message m]\nflags[2]:\n --prefix <p> Tenant sub-tree scope\n --message <m> Commit message (default: \"<sheet> delete <path>\")\nexamples:\n gitsheets-axi delete users jane\n gitsheets-axi delete posts hello --message \"remove deprecated post\"\nidempotency:\n Already-missing records exit 0 with result: \"no-op\" \u2014 no commit, no\n error. Pattern: an agent re-running a workflow can safely call delete\n without checking existence first.\n";
2
+ export declare const DELETE_HELP = "usage: gitsheets-axi delete <sheet> <path> [--prefix p] [--message m]\n gitsheets-axi delete <sheet> --filter expr ... [--dry-run] # bulk by query\n gitsheets-axi delete <sheet> --stdin [--dry-run] # bulk by id/path list\nflags[5]:\n --filter <expr> Bulk: delete every record matching the filter DSL (repeatable)\n --stdin Bulk: delete records named one-per-line on stdin\n --dry-run Bulk: report how many would be deleted \u2014 no commit\n --prefix <p> Tenant sub-tree scope\n --message <m> Commit message (default: \"<sheet> delete <path>\")\nexamples:\n gitsheets-axi delete users jane\n gitsheets-axi delete repos --filter disposition=delete-candidate --dry-run\n gitsheets-axi delete repos --filter disposition=delete-candidate\n cat paths.txt | gitsheets-axi delete repos --stdin\nidempotency:\n Already-missing records exit 0 with result: \"no-op\" \u2014 no commit, no error.\n Bulk delete removes every matching record in ONE commit.\n";
3
3
  export declare function deleteCommand(args: string[], ctx: GitsheetsContext): Promise<string>;
4
4
  //# sourceMappingURL=delete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,eAAO,MAAM,WAAW,khBAWvB,CAAC;AAkDF,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAAC,CAyEjB"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQtD,eAAO,MAAM,WAAW,ugCAiBvB,CAAC;AAiFF,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -1,23 +1,36 @@
1
1
  import { AxiError } from 'axi-sdk-js';
2
2
  import { NotFoundError, RECORD_PATH_KEY } from 'gitsheets';
3
3
  import { translateError } from '../errors.js';
4
- import { renderObject } from '../output/render.js';
4
+ import { joinBlocks, renderHelp, renderObject } from '../output/render.js';
5
+ import { openSheetForCommand } from '../util/open-sheet.js';
6
+ import { buildPredicate } from '../util/filter.js';
7
+ import { readStdin } from '../util/stdin.js';
8
+ import { MATERIALIZE_HINT } from '../util/hints.js';
5
9
  export const DELETE_HELP = `usage: gitsheets-axi delete <sheet> <path> [--prefix p] [--message m]
6
- flags[2]:
10
+ gitsheets-axi delete <sheet> --filter expr ... [--dry-run] # bulk by query
11
+ gitsheets-axi delete <sheet> --stdin [--dry-run] # bulk by id/path list
12
+ flags[5]:
13
+ --filter <expr> Bulk: delete every record matching the filter DSL (repeatable)
14
+ --stdin Bulk: delete records named one-per-line on stdin
15
+ --dry-run Bulk: report how many would be deleted — no commit
7
16
  --prefix <p> Tenant sub-tree scope
8
17
  --message <m> Commit message (default: "<sheet> delete <path>")
9
18
  examples:
10
19
  gitsheets-axi delete users jane
11
- gitsheets-axi delete posts hello --message "remove deprecated post"
20
+ gitsheets-axi delete repos --filter disposition=delete-candidate --dry-run
21
+ gitsheets-axi delete repos --filter disposition=delete-candidate
22
+ cat paths.txt | gitsheets-axi delete repos --stdin
12
23
  idempotency:
13
- Already-missing records exit 0 with result: "no-op" — no commit, no
14
- error. Pattern: an agent re-running a workflow can safely call delete
15
- without checking existence first.
24
+ Already-missing records exit 0 with result: "no-op" — no commit, no error.
25
+ Bulk delete removes every matching record in ONE commit.
16
26
  `;
17
27
  function parseDeleteFlags(args) {
18
28
  const flags = {
19
29
  sheet: '',
20
- path: '',
30
+ path: undefined,
31
+ filters: [],
32
+ stdin: false,
33
+ dryRun: false,
21
34
  prefix: undefined,
22
35
  message: undefined,
23
36
  };
@@ -27,34 +40,59 @@ function parseDeleteFlags(args) {
27
40
  if (arg === undefined)
28
41
  continue;
29
42
  const next = args[i + 1];
30
- if (arg === '--prefix') {
31
- if (!next)
32
- throw new AxiError('--prefix expects a path', 'VALIDATION_ERROR');
33
- flags.prefix = next;
34
- i++;
35
- continue;
36
- }
37
- if (arg === '--message') {
38
- if (!next)
39
- throw new AxiError('--message expects a string', 'VALIDATION_ERROR');
40
- flags.message = next;
41
- i++;
42
- continue;
43
- }
44
- if (arg.startsWith('-')) {
45
- throw new AxiError(`Unknown flag: ${arg}`, 'VALIDATION_ERROR', [
46
- 'Run `gitsheets-axi delete --help`',
47
- ]);
43
+ switch (arg) {
44
+ case '--filter':
45
+ if (!next)
46
+ throw new AxiError('--filter expects an expression', 'VALIDATION_ERROR');
47
+ flags.filters.push(next);
48
+ i++;
49
+ break;
50
+ case '--stdin':
51
+ flags.stdin = true;
52
+ break;
53
+ case '--dry-run':
54
+ flags.dryRun = true;
55
+ break;
56
+ case '--prefix':
57
+ if (!next)
58
+ throw new AxiError('--prefix expects a path', 'VALIDATION_ERROR');
59
+ flags.prefix = next;
60
+ i++;
61
+ break;
62
+ case '--message':
63
+ if (!next)
64
+ throw new AxiError('--message expects a string', 'VALIDATION_ERROR');
65
+ flags.message = next;
66
+ i++;
67
+ break;
68
+ default:
69
+ if (arg.startsWith('-')) {
70
+ throw new AxiError(`Unknown flag: ${arg}`, 'VALIDATION_ERROR', [
71
+ 'Run `gitsheets-axi delete --help`',
72
+ ]);
73
+ }
74
+ positional.push(arg);
48
75
  }
49
- positional.push(arg);
50
76
  }
51
- if (positional.length !== 2) {
52
- throw new AxiError('delete requires <sheet> <path>', 'VALIDATION_ERROR', [
77
+ flags.sheet = positional[0] ?? '';
78
+ flags.path = positional[1];
79
+ const bulk = flags.filters.length > 0 || flags.stdin;
80
+ if (!flags.sheet) {
81
+ throw new AxiError('delete requires <sheet>', 'VALIDATION_ERROR', [
82
+ 'Example: gitsheets-axi delete users jane',
83
+ ]);
84
+ }
85
+ if (flags.filters.length > 0 && flags.stdin) {
86
+ throw new AxiError('Use either --filter or --stdin, not both', 'VALIDATION_ERROR');
87
+ }
88
+ if (bulk && flags.path !== undefined) {
89
+ throw new AxiError('Drop the <path> positional in bulk mode (--filter / --stdin)', 'VALIDATION_ERROR');
90
+ }
91
+ if (!bulk && flags.path === undefined) {
92
+ throw new AxiError('delete requires <sheet> <path> (or --filter / --stdin for bulk)', 'VALIDATION_ERROR', [
53
93
  'Example: gitsheets-axi delete users jane',
54
94
  ]);
55
95
  }
56
- flags.sheet = positional[0];
57
- flags.path = positional[1];
58
96
  return flags;
59
97
  }
60
98
  export async function deleteCommand(args, ctx) {
@@ -62,16 +100,16 @@ export async function deleteCommand(args, ctx) {
62
100
  return DELETE_HELP;
63
101
  }
64
102
  const flags = parseDeleteFlags(args);
65
- const target = stripExtension(flags.path);
103
+ const prefixOpts = flags.prefix !== undefined ? { prefix: flags.prefix } : {};
66
104
  const repo = await ctx.repo();
67
- let sheet;
68
- try {
69
- sheet = await repo.openSheet(flags.sheet, flags.prefix !== undefined ? { prefix: flags.prefix } : {});
70
- }
71
- catch (error) {
72
- throw translateError(error);
105
+ const sheet = await openSheetForCommand(repo, flags.sheet, prefixOpts);
106
+ if (flags.filters.length > 0 || flags.stdin) {
107
+ return bulkDelete(repo, sheet, flags, prefixOpts);
73
108
  }
74
- // Pre-flight existence check — idempotent on already-missing.
109
+ return singleDelete(repo, sheet, flags, prefixOpts);
110
+ }
111
+ async function singleDelete(repo, sheet, flags, prefixOpts) {
112
+ const target = stripExtension(flags.path);
75
113
  let exists = false;
76
114
  try {
77
115
  for await (const record of sheet.query()) {
@@ -96,7 +134,7 @@ export async function deleteCommand(args, ctx) {
96
134
  const commitMessage = flags.message ?? `${flags.sheet} delete ${target}`;
97
135
  try {
98
136
  const result = await repo.transact({ message: commitMessage }, async (tx) => {
99
- const txSheet = tx.sheet(flags.sheet, flags.prefix !== undefined ? { prefix: flags.prefix } : {});
137
+ const txSheet = tx.sheet(flags.sheet, prefixOpts);
100
138
  await txSheet.delete(target);
101
139
  });
102
140
  return renderObject({
@@ -107,8 +145,6 @@ export async function deleteCommand(args, ctx) {
107
145
  });
108
146
  }
109
147
  catch (error) {
110
- // Edge: race where the record vanished between the existence check
111
- // and the delete. Treat as no-op rather than failing.
112
148
  if (error instanceof NotFoundError) {
113
149
  return renderObject({
114
150
  result: 'no-op',
@@ -120,13 +156,66 @@ export async function deleteCommand(args, ctx) {
120
156
  throw translateError(error);
121
157
  }
122
158
  }
159
+ async function bulkDelete(repo, sheet, flags, prefixOpts) {
160
+ // Resolve the delete set against records that actually exist, so the result
161
+ // is idempotent (absent ids are skipped, not errors).
162
+ const existing = await sheet.queryAll({}, { withBody: false });
163
+ const existingPaths = new Set();
164
+ for (const r of existing) {
165
+ const p = r[RECORD_PATH_KEY];
166
+ if (typeof p === 'string')
167
+ existingPaths.add(p);
168
+ }
169
+ let targets;
170
+ if (flags.stdin) {
171
+ const raw = await readStdin();
172
+ const requested = raw
173
+ .split('\n')
174
+ .map((s) => stripExtension(s.trim()))
175
+ .filter((s) => s.length > 0);
176
+ targets = requested.filter((p) => existingPaths.has(p));
177
+ }
178
+ else {
179
+ const predicate = buildPredicate(flags.filters);
180
+ targets = existing
181
+ .filter(predicate)
182
+ .map((r) => r[RECORD_PATH_KEY])
183
+ .filter((p) => typeof p === 'string');
184
+ }
185
+ if (flags.dryRun) {
186
+ return renderObject({
187
+ result: 'dry-run',
188
+ sheet: flags.sheet,
189
+ willDelete: targets.length,
190
+ of: existingPaths.size,
191
+ });
192
+ }
193
+ if (targets.length === 0) {
194
+ return renderObject({ result: 'no-op', sheet: flags.sheet, deleted: 0 });
195
+ }
196
+ const commitMessage = flags.message ?? `${flags.sheet} delete (${targets.length})`;
197
+ try {
198
+ const result = await repo.transact({ message: commitMessage }, async (tx) => {
199
+ const txSheet = tx.sheet(flags.sheet, prefixOpts);
200
+ for (const path of targets)
201
+ await txSheet.delete(path);
202
+ });
203
+ return joinBlocks(renderObject({
204
+ result: 'committed',
205
+ sheet: flags.sheet,
206
+ deleted: targets.length,
207
+ commit: result.commitHash,
208
+ }), renderHelp([MATERIALIZE_HINT]));
209
+ }
210
+ catch (error) {
211
+ throw translateError(error);
212
+ }
213
+ }
123
214
  function stripExtension(path) {
124
215
  if (path.endsWith('.toml'))
125
216
  return path.slice(0, -5);
126
217
  if (path.endsWith('.md'))
127
218
  return path.slice(0, -3);
128
- if (path.endsWith('.mdx'))
129
- return path.slice(0, -4);
130
219
  return path;
131
220
  }
132
221
  //# sourceMappingURL=delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GitsheetsContext } from '../context.js';
2
+ export declare const DISTINCT_HELP = "usage: gitsheets-axi distinct <sheet> <field> [--filter expr ...] [--prefix p]\nflags[2]:\n --filter <expr> Filter clause (repeatable), same DSL as query\n --prefix <p> Tenant sub-tree scope\nexamples:\n gitsheets-axi distinct repos target_team\n gitsheets-axi distinct repos disposition --filter status=classified\nnote:\n Lists each unique value of <field> (with its count), sorted alphabetically.\n Use `query --group-by <field>` for the same facets ordered by count.\n";
3
+ export declare function distinctCommand(args: string[], ctx: GitsheetsContext): Promise<string>;
4
+ //# sourceMappingURL=distinct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distinct.d.ts","sourceRoot":"","sources":["../../../src/commands/distinct.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQtD,eAAO,MAAM,aAAa,gfAUzB,CAAC;AA6CF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAAC,CAiCjB"}
@@ -0,0 +1,81 @@
1
+ import { AxiError } from 'axi-sdk-js';
2
+ import { translateError } from '../errors.js';
3
+ import { renderListResponse } from '../output/render.js';
4
+ import { field } from '../output/schema.js';
5
+ import { openSheetForCommand } from '../util/open-sheet.js';
6
+ import { buildPredicate } from '../util/filter.js';
7
+ import { facetCounts } from '../util/aggregate.js';
8
+ export const DISTINCT_HELP = `usage: gitsheets-axi distinct <sheet> <field> [--filter expr ...] [--prefix p]
9
+ flags[2]:
10
+ --filter <expr> Filter clause (repeatable), same DSL as query
11
+ --prefix <p> Tenant sub-tree scope
12
+ examples:
13
+ gitsheets-axi distinct repos target_team
14
+ gitsheets-axi distinct repos disposition --filter status=classified
15
+ note:
16
+ Lists each unique value of <field> (with its count), sorted alphabetically.
17
+ Use \`query --group-by <field>\` for the same facets ordered by count.
18
+ `;
19
+ function parseDistinctFlags(args) {
20
+ const positional = [];
21
+ const flags = { sheet: '', field: '', filters: [], prefix: undefined };
22
+ for (let i = 0; i < args.length; i++) {
23
+ const arg = args[i];
24
+ const next = args[i + 1];
25
+ switch (arg) {
26
+ case '--filter':
27
+ if (!next)
28
+ throw new AxiError('--filter expects an expression', 'VALIDATION_ERROR');
29
+ flags.filters.push(next);
30
+ i++;
31
+ break;
32
+ case '--prefix':
33
+ if (!next)
34
+ throw new AxiError('--prefix expects a path', 'VALIDATION_ERROR');
35
+ flags.prefix = next;
36
+ i++;
37
+ break;
38
+ default:
39
+ if (arg.startsWith('-')) {
40
+ throw new AxiError(`Unknown flag: ${arg}`, 'VALIDATION_ERROR', [
41
+ 'Run `gitsheets-axi distinct --help`',
42
+ ]);
43
+ }
44
+ positional.push(arg);
45
+ }
46
+ }
47
+ if (positional.length !== 2) {
48
+ throw new AxiError('distinct requires <sheet> <field>', 'VALIDATION_ERROR', [
49
+ 'Example: gitsheets-axi distinct repos target_team',
50
+ ]);
51
+ }
52
+ flags.sheet = positional[0];
53
+ flags.field = positional[1];
54
+ return flags;
55
+ }
56
+ export async function distinctCommand(args, ctx) {
57
+ if (args.length === 0 || (args.length === 1 && args[0] === '--help')) {
58
+ return DISTINCT_HELP;
59
+ }
60
+ const flags = parseDistinctFlags(args);
61
+ const repo = await ctx.repo();
62
+ const sheet = await openSheetForCommand(repo, flags.sheet, flags.prefix !== undefined ? { prefix: flags.prefix } : {});
63
+ let records;
64
+ try {
65
+ records = await sheet.queryAll({}, { withBody: false });
66
+ }
67
+ catch (error) {
68
+ throw translateError(error);
69
+ }
70
+ const predicate = buildPredicate(flags.filters);
71
+ const matched = records.filter(predicate);
72
+ const facets = facetCounts(matched, flags.field).sort((a, b) => a.value < b.value ? -1 : a.value > b.value ? 1 : 0);
73
+ return renderListResponse({
74
+ summary: { distinct: `${facets.length} values of ${flags.field}` },
75
+ name: 'values',
76
+ items: facets,
77
+ schema: [field('value'), field('count')],
78
+ emptyMessage: `no records in ${flags.sheet}`,
79
+ });
80
+ }
81
+ //# sourceMappingURL=distinct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../../src/commands/distinct.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { dirname } from 'node:path';
2
2
  import { homedir } from 'node:os';
3
3
  import { renderListResponse } from '../output/render.js';
4
4
  import { countRecords } from '../output/sheet-schema.js';
5
- import { computed, display, field } from '../output/schema.js';
5
+ import { display, field } from '../output/schema.js';
6
6
  import { translateError } from '../errors.js';
7
7
  function collapseHome(path) {
8
8
  const home = homedir();
@@ -61,7 +61,7 @@ export async function homeCommand(ctx) {
61
61
  schema: [
62
62
  field('name'),
63
63
  display('format'),
64
- computed('records', (item) => `${item['records']}`),
64
+ field('records'),
65
65
  field('root'),
66
66
  ],
67
67
  suggestions: help,
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/commands/home.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../src/commands/home.ts"],"names":[],"mappings":"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"}