@paradigma-inc/flywheel 0.1.53 → 0.1.60

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 (121) hide show
  1. package/README.md +121 -10
  2. package/package.json +1 -1
  3. package/skills/flywheel/references/flywheel-cli-tool-map.md +8 -0
  4. package/skills/flywheel/references/flywheel-mcp-tool-map.md +8 -0
  5. package/src/agents.mjs +114 -48
  6. package/src/cli.mjs +267 -35
  7. package/src/mcp-writer.mjs +190 -17
  8. package/src/runtime/required-runtime-commands.json +17 -4
  9. package/src/runtime/vendor/flywheel-cli-dist/auth/login.d.ts +1 -0
  10. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js +3 -6
  11. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js.map +1 -1
  12. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.d.ts +1 -0
  13. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js +1 -1
  14. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js.map +1 -1
  15. package/src/runtime/vendor/flywheel-cli-dist/commands/_admin-auth.d.ts +25 -0
  16. package/src/runtime/vendor/flywheel-cli-dist/commands/_admin-auth.js +35 -0
  17. package/src/runtime/vendor/flywheel-cli-dist/commands/_admin-auth.js.map +1 -0
  18. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-file-out.d.ts +39 -0
  19. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-file-out.js +72 -0
  20. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-file-out.js.map +1 -0
  21. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-get.d.ts +2 -0
  22. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-get.js +10 -0
  23. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-get.js.map +1 -0
  24. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-set.d.ts +2 -0
  25. package/src/runtime/vendor/flywheel-cli-dist/commands/{compute-policy-set.js → admin-compute-policy-set.js} +8 -3
  26. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-set.js.map +1 -0
  27. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export-stream.d.ts +2 -0
  28. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export-stream.js +114 -0
  29. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export-stream.js.map +1 -0
  30. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export.d.ts +2 -0
  31. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export.js +11 -0
  32. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export.js.map +1 -0
  33. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-list.d.ts +4 -0
  34. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-list.js +38 -0
  35. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-list.js.map +1 -0
  36. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-nodes-audit-list.d.ts +2 -0
  37. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-nodes-audit-list.js +14 -0
  38. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-nodes-audit-list.js.map +1 -0
  39. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.d.ts +6 -0
  40. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.js +3 -0
  41. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.js.map +1 -1
  42. package/src/runtime/vendor/flywheel-cli-dist/commands/env.d.ts +0 -4
  43. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js +7 -12
  44. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js.map +1 -1
  45. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.js +40 -30
  46. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.js.map +1 -1
  47. package/src/runtime/vendor/flywheel-cli-dist/commands/help.d.ts +2 -0
  48. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js +60 -10
  49. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js.map +1 -1
  50. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-create.d.ts +2 -0
  51. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-create.js +25 -0
  52. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-create.js.map +1 -0
  53. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-delete.d.ts +1 -0
  54. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-delete.js +6 -0
  55. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-delete.js.map +1 -0
  56. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-list.d.ts +2 -0
  57. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-list.js +10 -0
  58. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-list.js.map +1 -0
  59. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-runs-list.d.ts +2 -0
  60. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-runs-list.js +15 -0
  61. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-runs-list.js.map +1 -0
  62. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-create.d.ts +2 -0
  63. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-create.js +8 -0
  64. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-create.js.map +1 -0
  65. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-delete.d.ts +1 -0
  66. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-delete.js +6 -0
  67. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-delete.js.map +1 -0
  68. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-list.d.ts +1 -0
  69. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-list.js +6 -0
  70. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-list.js.map +1 -0
  71. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-update.d.ts +2 -0
  72. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-update.js +8 -0
  73. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-update.js.map +1 -0
  74. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-set-enabled.d.ts +2 -0
  75. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-set-enabled.js +8 -0
  76. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-set-enabled.js.map +1 -0
  77. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-update.d.ts +2 -0
  78. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-update.js +29 -0
  79. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-update.js.map +1 -0
  80. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js +32 -6
  81. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js.map +1 -1
  82. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js +4 -2
  83. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js.map +1 -1
  84. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.d.ts +8 -0
  85. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.js +118 -0
  86. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.js.map +1 -0
  87. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js +2 -2
  88. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js.map +1 -1
  89. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.js +7 -5
  90. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.js.map +1 -1
  91. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/hooks.d.ts +2 -0
  92. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/hooks.js +244 -0
  93. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/hooks.js.map +1 -0
  94. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js +1 -16
  95. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js.map +1 -1
  96. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js +2 -2
  97. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js.map +1 -1
  98. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js +1 -31
  99. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js.map +1 -1
  100. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.d.ts +2 -1
  101. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js +4 -0
  102. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js.map +1 -1
  103. package/src/runtime/vendor/flywheel-cli-dist/main.js +1 -1
  104. package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -1
  105. package/src/runtime/vendor/manifest.json +61 -10
  106. package/src/setup/io/patchers/json.mjs +2 -0
  107. package/src/setup/io/patchers/toml.mjs +7 -1
  108. package/src/setup/io/patchers/yaml.mjs +2 -0
  109. package/src/setup/modes/cli.mjs +41 -16
  110. package/src/setup/modes/mcp-command.mjs +98 -19
  111. package/src/setup/modes/mcp.mjs +26 -1
  112. package/src/setup/shared/prior-mode-detect.mjs +133 -14
  113. package/src/skill-installer.mjs +179 -1
  114. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.d.ts +0 -1
  115. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.js +0 -6
  116. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.js.map +0 -1
  117. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.d.ts +0 -2
  118. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.js.map +0 -1
  119. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.d.ts +0 -2
  120. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.js +0 -7
  121. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.js.map +0 -1
@@ -1,5 +1,6 @@
1
+ import { adminAuthRequestOptions } from './_admin-auth.js';
1
2
  import { requiredString } from './utils.js';
2
- export const computePolicySetCommand = async (context) => {
3
+ export const adminComputePolicySetCommand = async (context) => {
3
4
  const nodeId = requiredString(context.params, 'node_id');
4
5
  const body = {};
5
6
  for (const [key, value] of Object.entries(context.params)) {
@@ -14,6 +15,10 @@ export const computePolicySetCommand = async (context) => {
14
15
  body[key] = !Number.isNaN(asInt) && String(asInt) === value ? asInt : value;
15
16
  }
16
17
  }
17
- return context.requestJson('PATCH', `/nodes/${encodeURIComponent(nodeId)}/compute/policy`, { body });
18
+ const options = {
19
+ body,
20
+ ...adminAuthRequestOptions(context.apiKey),
21
+ };
22
+ return context.requestJson('PATCH', `/admin/nodes/${encodeURIComponent(nodeId)}/compute/policy`, options);
18
23
  };
19
- //# sourceMappingURL=compute-policy-set.js.map
24
+ //# sourceMappingURL=admin-compute-policy-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-compute-policy-set.js","sourceRoot":"","sources":["../../src/commands/admin-compute-policy-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,4BAA4B,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAmB;QAC9B,IAAI;QACJ,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3C,CAAC;IACF,OAAO,OAAO,CAAC,WAAW,CACxB,OAAO,EACP,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,EAC3D,OAAO,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const adminGraphsExportStreamCommand: CommandHandler;
@@ -0,0 +1,114 @@
1
+ import { CliUsageError } from '../errors.js';
2
+ import { adminAuthRequestOptions } from './_admin-auth.js';
3
+ import { openWriteStreamOrFail } from './_stream-file-out.js';
4
+ import { makeSafeStreamWriter } from './_stream-writer.js';
5
+ import { optionalInt, optionalString } from './utils.js';
6
+ export const adminGraphsExportStreamCommand = async (context) => {
7
+ if (!context.requestRaw) {
8
+ throw new CliUsageError('binary transport unavailable in this context');
9
+ }
10
+ const query = {};
11
+ const tagId = optionalString(context.params, 'tag-id');
12
+ if (tagId !== undefined)
13
+ query['tag_id'] = tagId;
14
+ const kind = optionalString(context.params, 'kind');
15
+ if (kind !== undefined)
16
+ query['kind'] = kind;
17
+ const ownerUserId = optionalString(context.params, 'owner-user-id');
18
+ if (ownerUserId !== undefined)
19
+ query['owner_user_id'] = ownerUserId;
20
+ const createdAfter = optionalString(context.params, 'created-after');
21
+ if (createdAfter !== undefined)
22
+ query['created_after'] = createdAfter;
23
+ const createdBefore = optionalString(context.params, 'created-before');
24
+ if (createdBefore !== undefined)
25
+ query['created_before'] = createdBefore;
26
+ const cursor = optionalString(context.params, 'cursor');
27
+ if (cursor !== undefined)
28
+ query['cursor'] = cursor;
29
+ const pageSize = optionalInt(context.params, 'page-size');
30
+ if (pageSize !== undefined)
31
+ query['page_size'] = pageSize;
32
+ const options = {
33
+ query,
34
+ ...adminAuthRequestOptions(context.apiKey),
35
+ };
36
+ // Open and validate ``--out`` BEFORE dispatching the HTTP request.
37
+ // ``/admin/graphs/export.jsonl`` is expensive server-side (per-graph
38
+ // subgraph loads); starting it and then failing locally on a bad output
39
+ // path would burn backend work we cannot cancel cleanly from userland
40
+ // once the response body is in flight. The helper writes to a
41
+ // ``.partial`` temp file next to the destination so a later request
42
+ // failure leaves the caller's prior ``--out`` contents untouched.
43
+ const outPath = context.globals?.outPath ?? optionalString(context.params, 'out');
44
+ const fileHandle = await openWriteStreamOrFail(outPath);
45
+ let response;
46
+ try {
47
+ response = await context.requestRaw('GET', '/admin/graphs/export.jsonl', options);
48
+ }
49
+ catch (err) {
50
+ if (fileHandle) {
51
+ fileHandle.stream.destroy();
52
+ await fileHandle.abort();
53
+ }
54
+ throw err;
55
+ }
56
+ // Wrap the opened stream so in-loop write failures (ENOSPC, EIO,
57
+ // EPIPE, destination destroyed mid-stream) surface deterministically,
58
+ // and backpressure is awaited instead of over-buffering memory during
59
+ // bulk exports. This is the canonical pattern across streaming
60
+ // commands in this package.
61
+ const safeWriter = fileHandle
62
+ ? makeSafeStreamWriter(fileHandle.stream)
63
+ : null;
64
+ const writeStdout = context.stdout ??
65
+ ((chunk) => {
66
+ process.stdout.write(chunk);
67
+ });
68
+ const write = safeWriter
69
+ ? async (chunk) => {
70
+ await safeWriter.write(chunk);
71
+ }
72
+ : async (chunk) => {
73
+ writeStdout(chunk);
74
+ };
75
+ if (!response.body) {
76
+ if (safeWriter)
77
+ await safeWriter.close();
78
+ if (fileHandle)
79
+ await fileHandle.finalize();
80
+ return null;
81
+ }
82
+ const decoder = new TextDecoder();
83
+ const reader = response.body.getReader();
84
+ let succeeded = false;
85
+ try {
86
+ while (true) {
87
+ const { value, done } = await reader.read();
88
+ if (done)
89
+ break;
90
+ const text = decoder.decode(value, { stream: true });
91
+ if (text)
92
+ await write(text);
93
+ }
94
+ const tail = decoder.decode();
95
+ if (tail)
96
+ await write(tail);
97
+ succeeded = true;
98
+ }
99
+ finally {
100
+ reader.releaseLock();
101
+ if (safeWriter)
102
+ await safeWriter.close();
103
+ if (fileHandle) {
104
+ if (succeeded) {
105
+ await fileHandle.finalize();
106
+ }
107
+ else {
108
+ await fileHandle.abort();
109
+ }
110
+ }
111
+ }
112
+ return null;
113
+ };
114
+ //# sourceMappingURL=admin-graphs-export-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-graphs-export-stream.js","sourceRoot":"","sources":["../../src/commands/admin-graphs-export-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const adminGraphsExportCommand: CommandHandler;
@@ -0,0 +1,11 @@
1
+ import { adminAuthRequestOptions } from './_admin-auth.js';
2
+ import { requiredString } from './utils.js';
3
+ export const adminGraphsExportCommand = async (context) => {
4
+ const rootNodeId = requiredString(context.params, 'root-node-id');
5
+ const options = {
6
+ ...adminAuthRequestOptions(context.apiKey),
7
+ };
8
+ const path = `/admin/graphs/${encodeURIComponent(rootNodeId)}/export`;
9
+ return context.requestJson('GET', path, options);
10
+ };
11
+ //# sourceMappingURL=admin-graphs-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-graphs-export.js","sourceRoot":"","sources":["../../src/commands/admin-graphs-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,wBAAwB,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IACxE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,OAAO,GAAmB;QAC9B,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3C,CAAC;IACF,MAAM,IAAI,GAAG,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC;IACtE,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { adminAuthRequestOptions } from './_admin-auth.js';
2
+ import type { CommandHandler } from './types.js';
3
+ export { adminAuthRequestOptions };
4
+ export declare const adminGraphsListCommand: CommandHandler;
@@ -0,0 +1,38 @@
1
+ import { adminAuthRequestOptions } from './_admin-auth.js';
2
+ import { optionalInt, optionalString } from './utils.js';
3
+ // ``adminAuthRequestOptions`` now lives in ``./_admin-auth.ts`` so it
4
+ // can be shared by every admin CLI command (graphs + node-scoped
5
+ // compute-policy / audit) without cross-file coupling. Re-exporting
6
+ // here keeps already-landed imports working without forcing a churn
7
+ // pass.
8
+ export { adminAuthRequestOptions };
9
+ export const adminGraphsListCommand = async (context) => {
10
+ const query = {};
11
+ const tagId = optionalString(context.params, 'tag-id');
12
+ if (tagId !== undefined)
13
+ query['tag_id'] = tagId;
14
+ const kind = optionalString(context.params, 'kind');
15
+ if (kind !== undefined)
16
+ query['kind'] = kind;
17
+ const ownerUserId = optionalString(context.params, 'owner-user-id');
18
+ if (ownerUserId !== undefined)
19
+ query['owner_user_id'] = ownerUserId;
20
+ const createdAfter = optionalString(context.params, 'created-after');
21
+ if (createdAfter !== undefined)
22
+ query['created_after'] = createdAfter;
23
+ const createdBefore = optionalString(context.params, 'created-before');
24
+ if (createdBefore !== undefined)
25
+ query['created_before'] = createdBefore;
26
+ const cursor = optionalString(context.params, 'cursor');
27
+ if (cursor !== undefined)
28
+ query['cursor'] = cursor;
29
+ const pageSize = optionalInt(context.params, 'page-size');
30
+ if (pageSize !== undefined)
31
+ query['page_size'] = pageSize;
32
+ const options = {
33
+ query,
34
+ ...adminAuthRequestOptions(context.apiKey),
35
+ };
36
+ return context.requestJson('GET', '/admin/graphs', options);
37
+ };
38
+ //# sourceMappingURL=admin-graphs-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-graphs-list.js","sourceRoot":"","sources":["../../src/commands/admin-graphs-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,sEAAsE;AACtE,iEAAiE;AACjE,oEAAoE;AACpE,oEAAoE;AACpE,QAAQ;AACR,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,CAAC,MAAM,sBAAsB,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IACtE,MAAM,KAAK,GAA8C,EAAE,CAAC;IAC5D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,IAAI,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACpE,IAAI,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC;IACpE,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrE,IAAI,YAAY,KAAK,SAAS;QAAE,KAAK,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC;IACtE,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvE,IAAI,aAAa,KAAK,SAAS;QAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;IACzE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;IAE1D,MAAM,OAAO,GAAmB;QAC9B,KAAK;QACL,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3C,CAAC;IACF,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const adminNodesAuditListCommand: CommandHandler;
@@ -0,0 +1,14 @@
1
+ import { adminAuthRequestOptions } from './_admin-auth.js';
2
+ import { optionalInt, requiredString } from './utils.js';
3
+ export const adminNodesAuditListCommand = async (context) => {
4
+ const nodeId = requiredString(context.params, 'node_id');
5
+ const limit = optionalInt(context.params, 'limit');
6
+ const options = {
7
+ ...adminAuthRequestOptions(context.apiKey),
8
+ };
9
+ if (limit !== undefined) {
10
+ options.query = { limit };
11
+ }
12
+ return context.requestJson('GET', `/admin/nodes/${encodeURIComponent(nodeId)}/audit`, options);
13
+ };
14
+ //# sourceMappingURL=admin-nodes-audit-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-nodes-audit-list.js","sourceRoot":"","sources":["../../src/commands/admin-nodes-audit-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,0BAA0B,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAmB;QAC9B,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3C,CAAC;IACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,CACxB,KAAK,EACL,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAClD,OAAO,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -1,5 +1,8 @@
1
1
  export declare const DELETE_MODES: readonly ["cascade", "detach_shared"];
2
2
  export declare const SHARING_MODES: readonly ["private", "public", "unlisted"];
3
+ export declare const HOOK_TRIGGER_EVENTS: readonly ["artifact.finalized"];
4
+ export declare const HOOK_SCOPES: readonly ["self", "subtree", "graph"];
5
+ export declare const HOOK_RERUN_POLICIES: readonly ["if_inputs_changed"];
3
6
  export declare const STATUS_FILTERS: readonly ["active", "archived", "deleted", "all"];
4
7
  export declare const BUDGET_SOURCES: readonly ["prepaid", "postpaid", "promotional", "grant"];
5
8
  export declare const GRANT_BUDGET_SOURCES: readonly ["user", "root"];
@@ -9,6 +12,9 @@ export declare const NODE_PROJECTION: readonly ["core", "topology", "compact", "
9
12
  export declare const APPROVAL_STATUS: readonly ["active", "expired"];
10
13
  export type DeleteMode = (typeof DELETE_MODES)[number];
11
14
  export type SharingMode = (typeof SHARING_MODES)[number];
15
+ export type HookTriggerEvent = (typeof HOOK_TRIGGER_EVENTS)[number];
16
+ export type HookScope = (typeof HOOK_SCOPES)[number];
17
+ export type HookRerunPolicy = (typeof HOOK_RERUN_POLICIES)[number];
12
18
  export type StatusFilter = (typeof STATUS_FILTERS)[number];
13
19
  export type BudgetSource = (typeof BUDGET_SOURCES)[number];
14
20
  export type GrantBudgetSource = (typeof GRANT_BUDGET_SOURCES)[number];
@@ -2,6 +2,9 @@ export const DELETE_MODES = ['cascade', 'detach_shared'];
2
2
  // Mirrors the server's NodeSharingMode literal and parse_node_sharing_mode in
3
3
  // server/node_sharing_service.py. The server rejects any other value with 422.
4
4
  export const SHARING_MODES = ['private', 'public', 'unlisted'];
5
+ export const HOOK_TRIGGER_EVENTS = ['artifact.finalized'];
6
+ export const HOOK_SCOPES = ['self', 'subtree', 'graph'];
7
+ export const HOOK_RERUN_POLICIES = ['if_inputs_changed'];
5
8
  export const STATUS_FILTERS = ['active', 'archived', 'deleted', 'all'];
6
9
  export const BUDGET_SOURCES = ['prepaid', 'postpaid', 'promotional', 'grant'];
7
10
  export const GRANT_BUDGET_SOURCES = ['user', 'root'];
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/commands/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,eAAe,CAAU,CAAC;AAClE,8EAA8E;AAC9E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAU,CAAC;AACvF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/commands/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,eAAe,CAAU,CAAC;AAClE,8EAA8E;AAC9E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,oBAAoB,CAAU,CAAC;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,mBAAmB,CAAU,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAU,CAAC;AACvF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC"}
@@ -4,9 +4,5 @@ export interface EnvSwitchArgs {
4
4
  name: string;
5
5
  }
6
6
  export declare function runEnvSwitch(args: EnvSwitchArgs): Promise<void>;
7
- export interface EnvListArgs {
8
- configPath: string;
9
- }
10
- export declare function runEnvList(args: EnvListArgs): Promise<string>;
11
7
  export declare const envSwitchCommand: CommandHandler;
12
8
  export declare const envListCommand: CommandHandler;
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { CliUsageError } from '../errors.js';
4
4
  import { EXIT_USAGE } from '../exit-codes.js';
5
5
  import { BUILTIN_PROFILES, BUILTIN_PROFILE_NAMES, isBuiltinProfileName, } from '../auth/profiles.js';
6
+ import { isInternalMode } from './help.js';
6
7
  async function readConfigFile(configPath) {
7
8
  try {
8
9
  const raw = await readFile(configPath, 'utf8');
@@ -19,7 +20,9 @@ async function writeConfigFile(configPath, config) {
19
20
  }
20
21
  export async function runEnvSwitch(args) {
21
22
  if (!isBuiltinProfileName(args.name)) {
22
- const available = BUILTIN_PROFILE_NAMES.join(', ');
23
+ const internal = isInternalMode();
24
+ const visibleNames = BUILTIN_PROFILE_NAMES.filter((name) => internal || !BUILTIN_PROFILES[name].hidden);
25
+ const available = visibleNames.join(', ');
23
26
  // Bad --name is an argument-validation error, not a transport failure.
24
27
  // Scripts that retry on EXIT_TRANSPORT (2) must not retry this;
25
28
  // EXIT_USAGE (1) is the right signal.
@@ -29,16 +32,6 @@ export async function runEnvSwitch(args) {
29
32
  config.activeProfile = args.name;
30
33
  await writeConfigFile(args.configPath, config);
31
34
  }
32
- export async function runEnvList(args) {
33
- const config = await readConfigFile(args.configPath);
34
- const active = typeof config.activeProfile === 'string' ? config.activeProfile : null;
35
- const lines = BUILTIN_PROFILE_NAMES.map((name) => {
36
- const baseUrl = BUILTIN_PROFILES[name].baseUrl;
37
- const marker = name === active ? ' (active)' : '';
38
- return ` ${name.padEnd(10)}${baseUrl}${marker}`;
39
- });
40
- return lines.join('\n') + '\n';
41
- }
42
35
  export const envSwitchCommand = async (context) => {
43
36
  const rawName = context.params.name;
44
37
  if (typeof rawName !== 'string' || !rawName.trim()) {
@@ -54,8 +47,10 @@ export const envListCommand = async (context) => {
54
47
  // rendered payload and break scripts that parse `flywheel env:list`.
55
48
  const config = await readConfigFile(context.configPath);
56
49
  const active = typeof config.activeProfile === 'string' ? config.activeProfile : null;
50
+ const internal = isInternalMode();
51
+ const visibleNames = BUILTIN_PROFILE_NAMES.filter((name) => internal || !BUILTIN_PROFILES[name].hidden);
57
52
  return {
58
- profiles: BUILTIN_PROFILE_NAMES.map((name) => ({
53
+ profiles: visibleNames.map((name) => ({
59
54
  name,
60
55
  baseUrl: BUILTIN_PROFILES[name].baseUrl,
61
56
  active: name === active,
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,38 @@
1
- import { createWriteStream } from 'node:fs';
2
1
  import { CliUsageError } from '../errors.js';
2
+ import { openWriteStreamOrFail } from './_stream-file-out.js';
3
3
  import { makeSafeStreamWriter } from './_stream-writer.js';
4
4
  export const exportHistoryCommand = async (context) => {
5
5
  if (!context.requestRaw) {
6
6
  throw new CliUsageError('binary transport unavailable in this context');
7
7
  }
8
+ // Open and validate ``--out`` BEFORE dispatching the HTTP request;
9
+ // ``/legacy/history/export.jsonl`` is a history-sized feed and we
10
+ // should not start that server-side work just to fail locally on a
11
+ // bad output path. The helper writes to a ``.partial`` temp file
12
+ // next to the destination so a later request failure leaves the
13
+ // caller's prior ``--out`` contents untouched.
8
14
  const outPath = context.globals?.outPath;
9
- const response = await context.requestRaw('GET', '/legacy/history/export.jsonl');
15
+ const fileHandle = await openWriteStreamOrFail(outPath);
10
16
  // Stream the response body chunk-by-chunk to avoid buffering the full
11
- // JSONL payload in memory. /legacy/history/export.jsonl is explicitly a
12
- // history-sized feed; response.text() here would materialize the whole
13
- // body before a single byte reached the writer.
14
- let safeWriter = null;
15
- if (outPath && outPath !== '-') {
16
- const candidate = createWriteStream(outPath);
17
- try {
18
- await new Promise((resolve, reject) => {
19
- const onOpen = () => {
20
- candidate.off('error', onError);
21
- resolve();
22
- };
23
- const onError = (err) => {
24
- candidate.off('open', onOpen);
25
- reject(err);
26
- };
27
- candidate.once('open', onOpen);
28
- candidate.once('error', onError);
29
- });
30
- }
31
- catch (err) {
32
- candidate.destroy();
33
- throw new CliUsageError(`cannot open --out=${outPath}: ${err.message}`);
17
+ // JSONL payload in memory. ``response.text()`` here would materialize
18
+ // the whole body before a single byte reached the writer.
19
+ let response;
20
+ try {
21
+ response = await context.requestRaw('GET', '/legacy/history/export.jsonl');
22
+ }
23
+ catch (err) {
24
+ if (fileHandle) {
25
+ fileHandle.stream.destroy();
26
+ await fileHandle.abort();
34
27
  }
35
- // Wrap the stream so in-loop write failures (ENOSPC, EIO, EPIPE,
36
- // destination destroyed mid-stream) surface deterministically
37
- // instead of being swallowed into a truncated file + exit 0.
38
- safeWriter = makeSafeStreamWriter(candidate);
28
+ throw err;
39
29
  }
30
+ // Wrap the opened stream so in-loop write failures (ENOSPC, EIO,
31
+ // EPIPE, destination destroyed mid-stream) surface deterministically
32
+ // instead of being swallowed into a truncated file + exit 0.
33
+ const safeWriter = fileHandle
34
+ ? makeSafeStreamWriter(fileHandle.stream)
35
+ : null;
40
36
  // Prefer the injected stdout writer so programmatic runCli callers
41
37
  // capture streamed output; fall back to process.stdout for direct
42
38
  // handler invocations (e.g. unit tests that build a bare context).
@@ -52,13 +48,18 @@ export const exportHistoryCommand = async (context) => {
52
48
  writeStdout(chunk);
53
49
  };
54
50
  if (!response.body) {
55
- // No body — nothing to stream. Close the file stream if open and exit.
51
+ // No body — nothing to stream. Close + finalize (renames the empty
52
+ // temp over the destination so callers observing ``outPath`` always
53
+ // see a fully-formed result, never a stale prior version).
56
54
  if (safeWriter)
57
55
  await safeWriter.close();
56
+ if (fileHandle)
57
+ await fileHandle.finalize();
58
58
  return null;
59
59
  }
60
60
  const decoder = new TextDecoder();
61
61
  const reader = response.body.getReader();
62
+ let succeeded = false;
62
63
  try {
63
64
  while (true) {
64
65
  const { value, done } = await reader.read();
@@ -71,11 +72,20 @@ export const exportHistoryCommand = async (context) => {
71
72
  const tail = decoder.decode();
72
73
  if (tail)
73
74
  await write(tail);
75
+ succeeded = true;
74
76
  }
75
77
  finally {
76
78
  reader.releaseLock();
77
79
  if (safeWriter)
78
80
  await safeWriter.close();
81
+ if (fileHandle) {
82
+ if (succeeded) {
83
+ await fileHandle.finalize();
84
+ }
85
+ else {
86
+ await fileHandle.abort();
87
+ }
88
+ }
79
89
  }
80
90
  return null;
81
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"export-history.js","sourceRoot":"","sources":["../../src/commands/export-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-history.js","sourceRoot":"","sources":["../../src/commands/export-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAyB,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAyB,MAAM,qBAAqB,CAAC;AAGlF,MAAM,CAAC,MAAM,oBAAoB,GAAmB,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,aAAa,CAAC,8CAA8C,CAAC,CAAC;IAC1E,CAAC;IACD,mEAAmE;IACnE,kEAAkE;IAClE,mEAAmE;IACnE,iEAAiE;IACjE,gEAAgE;IAChE,+CAA+C;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACzC,MAAM,UAAU,GAA4B,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEjF,sEAAsE;IACtE,sEAAsE;IACtE,0DAA0D;IAC1D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,iEAAiE;IACjE,qEAAqE;IACrE,6DAA6D;IAC7D,MAAM,UAAU,GAA4B,UAAU;QACpD,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;IAET,mEAAmE;IACnE,kEAAkE;IAClE,mEAAmE;IACnE,MAAM,WAAW,GACf,OAAO,CAAC,MAAM;QACd,CAAC,CAAC,KAA0B,EAAE,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;YACtB,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACH,CAAC,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;YACtB,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC;IAEN,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,mEAAmE;QACnE,oEAAoE;QACpE,2DAA2D;QAC3D,IAAI,UAAU;YAAE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,UAAU;YAAE,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,IAAI;gBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,IAAI;YAAE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACrB,IAAI,UAAU;YAAE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -6,7 +6,9 @@ export interface HelpExtra {
6
6
  group: CommandTopicId;
7
7
  name: string;
8
8
  summary: string;
9
+ hidden?: boolean;
9
10
  }
11
+ export declare function isInternalMode(): boolean;
10
12
  export declare const TOPIC_ORDER: ReadonlyArray<{
11
13
  id: CommandTopicId;
12
14
  label: string;