@wirecat/cli-base 0.45.0 → 0.46.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 (330) hide show
  1. package/CHANGELOG.md +1155 -0
  2. package/README.md +17 -2
  3. package/dist/batch.d.ts +0 -1
  4. package/dist/batch.js +0 -1
  5. package/dist/codegen/index.d.ts +0 -1
  6. package/dist/codegen/index.js +0 -1
  7. package/dist/codegen/manifest.d.ts +0 -1
  8. package/dist/codegen/manifest.js +0 -1
  9. package/dist/codegen/model.d.ts +0 -1
  10. package/dist/codegen/model.js +0 -1
  11. package/dist/codegen/names.d.ts +0 -1
  12. package/dist/codegen/names.js +0 -1
  13. package/dist/codegen/pipeline.d.ts +0 -1
  14. package/dist/codegen/pipeline.js +0 -1
  15. package/dist/codegen/runtime.d.ts +0 -1
  16. package/dist/codegen/runtime.js +0 -1
  17. package/dist/codegen/tree.d.ts +0 -1
  18. package/dist/codegen/tree.js +0 -1
  19. package/dist/codegen/typescript.d.ts +0 -1
  20. package/dist/codegen/typescript.js +0 -1
  21. package/dist/codegen/valibot.d.ts +0 -1
  22. package/dist/codegen/valibot.js +0 -1
  23. package/dist/commands/document.d.ts +0 -1
  24. package/dist/commands/document.js +0 -1
  25. package/dist/commands/index.d.ts +0 -1
  26. package/dist/commands/index.js +0 -1
  27. package/dist/commands/page.d.ts +3 -2
  28. package/dist/commands/page.js +3 -2
  29. package/dist/commands/registry.d.ts +0 -1
  30. package/dist/commands/registry.js +0 -1
  31. package/dist/completion/index.d.ts +0 -1
  32. package/dist/completion/index.js +0 -1
  33. package/dist/config.d.ts +0 -1
  34. package/dist/config.js +0 -1
  35. package/dist/credentials.d.ts +0 -1
  36. package/dist/credentials.js +0 -1
  37. package/dist/deadline.d.ts +0 -1
  38. package/dist/deadline.js +0 -1
  39. package/dist/dev/audit.d.ts +0 -1
  40. package/dist/dev/audit.js +0 -1
  41. package/dist/dev/bin.d.ts +0 -1
  42. package/dist/dev/bin.js +0 -1
  43. package/dist/dev/land.d.ts +0 -1
  44. package/dist/dev/land.js +0 -1
  45. package/dist/dev/lint.d.ts +0 -1
  46. package/dist/dev/lint.js +0 -1
  47. package/dist/dev/main.d.ts +0 -1
  48. package/dist/dev/main.js +0 -1
  49. package/dist/dev/next-version.d.ts +0 -1
  50. package/dist/dev/next-version.js +0 -1
  51. package/dist/dev/slow-tests.d.ts +0 -1
  52. package/dist/dev/slow-tests.js +0 -1
  53. package/dist/dev/test-matrix.d.ts +0 -1
  54. package/dist/dev/test-matrix.js +0 -1
  55. package/dist/drain.d.ts +0 -1
  56. package/dist/drain.js +0 -1
  57. package/dist/errors.d.ts +0 -1
  58. package/dist/errors.js +0 -1
  59. package/dist/executable.d.ts +0 -1
  60. package/dist/executable.js +0 -1
  61. package/dist/exit-codes.d.ts +0 -1
  62. package/dist/exit-codes.js +0 -1
  63. package/dist/failure.d.ts +0 -1
  64. package/dist/failure.js +0 -1
  65. package/dist/http/body.d.ts +0 -1
  66. package/dist/http/body.js +0 -1
  67. package/dist/http/index.d.ts +0 -1
  68. package/dist/http/index.js +0 -1
  69. package/dist/index.d.ts +0 -1
  70. package/dist/index.js +0 -1
  71. package/dist/keyring.d.ts +0 -1
  72. package/dist/keyring.js +0 -1
  73. package/dist/logger.d.ts +0 -1
  74. package/dist/logger.js +0 -1
  75. package/dist/logging.d.ts +0 -1
  76. package/dist/logging.js +0 -1
  77. package/dist/mcp/index.d.ts +0 -1
  78. package/dist/mcp/index.js +0 -1
  79. package/dist/output-buffer.d.ts +0 -1
  80. package/dist/output-buffer.js +0 -1
  81. package/dist/paths.d.ts +0 -1
  82. package/dist/paths.js +0 -1
  83. package/dist/pretty.d.ts +0 -1
  84. package/dist/pretty.js +0 -1
  85. package/dist/query/dates.d.ts +0 -1
  86. package/dist/query/dates.js +0 -1
  87. package/dist/query/evaluate.d.ts +0 -1
  88. package/dist/query/evaluate.js +0 -1
  89. package/dist/query/fields.d.ts +0 -1
  90. package/dist/query/fields.js +0 -1
  91. package/dist/query/help.d.ts +0 -1
  92. package/dist/query/help.js +0 -1
  93. package/dist/query/index.d.ts +0 -1
  94. package/dist/query/index.js +0 -1
  95. package/dist/query/parser.d.ts +0 -1
  96. package/dist/query/parser.js +0 -1
  97. package/dist/query/registry.d.ts +0 -1
  98. package/dist/query/registry.js +0 -1
  99. package/dist/query/types.d.ts +0 -1
  100. package/dist/query/types.js +0 -1
  101. package/dist/query/validate.d.ts +0 -1
  102. package/dist/query/validate.js +0 -1
  103. package/dist/release/fold.d.ts +0 -1
  104. package/dist/release/fold.js +0 -1
  105. package/dist/release/index.d.ts +0 -1
  106. package/dist/release/index.js +0 -1
  107. package/dist/release/markdown.d.ts +0 -1
  108. package/dist/release/markdown.js +0 -1
  109. package/dist/release/structure.d.ts +0 -1
  110. package/dist/release/structure.js +0 -1
  111. package/dist/renderer.d.ts +0 -1
  112. package/dist/renderer.js +0 -1
  113. package/dist/result-fields.d.ts +0 -1
  114. package/dist/result-fields.js +0 -1
  115. package/dist/retry.d.ts +0 -1
  116. package/dist/retry.js +0 -1
  117. package/dist/sanitize.d.ts +0 -1
  118. package/dist/sanitize.js +0 -1
  119. package/dist/skill/index.d.ts +0 -1
  120. package/dist/skill/index.js +0 -1
  121. package/dist/standards/audit.d.ts +0 -1
  122. package/dist/standards/audit.js +0 -1
  123. package/dist/standards/effects.d.ts +0 -1
  124. package/dist/standards/effects.js +0 -1
  125. package/dist/standards/errors.d.ts +0 -1
  126. package/dist/standards/errors.js +0 -1
  127. package/dist/standards/fields.d.ts +0 -1
  128. package/dist/standards/fields.js +0 -1
  129. package/dist/standards/flags-how.d.ts +0 -1
  130. package/dist/standards/flags-how.js +0 -1
  131. package/dist/standards/flags-what.d.ts +0 -1
  132. package/dist/standards/flags-what.js +0 -1
  133. package/dist/standards/identifiers.d.ts +0 -1
  134. package/dist/standards/identifiers.js +0 -1
  135. package/dist/standards/index.d.ts +0 -1
  136. package/dist/standards/index.js +0 -1
  137. package/dist/standards/lint.d.ts +0 -1
  138. package/dist/standards/lint.js +0 -1
  139. package/dist/standards/log.d.ts +0 -1
  140. package/dist/standards/log.js +0 -1
  141. package/dist/standards/output.d.ts +0 -1
  142. package/dist/standards/output.js +0 -1
  143. package/dist/standards/registry.d.ts +0 -1
  144. package/dist/standards/registry.js +0 -1
  145. package/dist/standards/steps.d.ts +0 -1
  146. package/dist/standards/steps.js +0 -1
  147. package/dist/standards/tables.d.ts +0 -1
  148. package/dist/standards/tables.js +0 -1
  149. package/dist/standards/vocabulary.d.ts +0 -1
  150. package/dist/standards/vocabulary.js +1 -1
  151. package/dist/streams.d.ts +0 -1
  152. package/dist/streams.js +0 -1
  153. package/dist/testing/index.d.ts +0 -1
  154. package/dist/testing/index.js +0 -1
  155. package/dist/testing/network.d.ts +0 -1
  156. package/dist/testing/network.js +0 -1
  157. package/dist/testing/sandbox.d.ts +0 -1
  158. package/dist/testing/sandbox.js +0 -1
  159. package/dist/testing/setup.d.ts +0 -1
  160. package/dist/testing/setup.js +0 -1
  161. package/dist/time.d.ts +0 -1
  162. package/dist/time.js +0 -1
  163. package/dist/update/index.d.ts +0 -1
  164. package/dist/update/index.js +0 -1
  165. package/docs/standards/ci.md +10 -4
  166. package/docs/standards/layout.md +2 -1
  167. package/docs/standards/permissions.md +10 -7
  168. package/package.json +6 -1
  169. package/dist/batch.d.ts.map +0 -1
  170. package/dist/batch.js.map +0 -1
  171. package/dist/codegen/index.d.ts.map +0 -1
  172. package/dist/codegen/index.js.map +0 -1
  173. package/dist/codegen/manifest.d.ts.map +0 -1
  174. package/dist/codegen/manifest.js.map +0 -1
  175. package/dist/codegen/model.d.ts.map +0 -1
  176. package/dist/codegen/model.js.map +0 -1
  177. package/dist/codegen/names.d.ts.map +0 -1
  178. package/dist/codegen/names.js.map +0 -1
  179. package/dist/codegen/pipeline.d.ts.map +0 -1
  180. package/dist/codegen/pipeline.js.map +0 -1
  181. package/dist/codegen/runtime.d.ts.map +0 -1
  182. package/dist/codegen/runtime.js.map +0 -1
  183. package/dist/codegen/tree.d.ts.map +0 -1
  184. package/dist/codegen/tree.js.map +0 -1
  185. package/dist/codegen/typescript.d.ts.map +0 -1
  186. package/dist/codegen/typescript.js.map +0 -1
  187. package/dist/codegen/valibot.d.ts.map +0 -1
  188. package/dist/codegen/valibot.js.map +0 -1
  189. package/dist/commands/document.d.ts.map +0 -1
  190. package/dist/commands/document.js.map +0 -1
  191. package/dist/commands/index.d.ts.map +0 -1
  192. package/dist/commands/index.js.map +0 -1
  193. package/dist/commands/page.d.ts.map +0 -1
  194. package/dist/commands/page.js.map +0 -1
  195. package/dist/commands/registry.d.ts.map +0 -1
  196. package/dist/commands/registry.js.map +0 -1
  197. package/dist/completion/index.d.ts.map +0 -1
  198. package/dist/completion/index.js.map +0 -1
  199. package/dist/config.d.ts.map +0 -1
  200. package/dist/config.js.map +0 -1
  201. package/dist/credentials.d.ts.map +0 -1
  202. package/dist/credentials.js.map +0 -1
  203. package/dist/deadline.d.ts.map +0 -1
  204. package/dist/deadline.js.map +0 -1
  205. package/dist/dev/audit.d.ts.map +0 -1
  206. package/dist/dev/audit.js.map +0 -1
  207. package/dist/dev/bin.d.ts.map +0 -1
  208. package/dist/dev/bin.js.map +0 -1
  209. package/dist/dev/land.d.ts.map +0 -1
  210. package/dist/dev/land.js.map +0 -1
  211. package/dist/dev/lint.d.ts.map +0 -1
  212. package/dist/dev/lint.js.map +0 -1
  213. package/dist/dev/main.d.ts.map +0 -1
  214. package/dist/dev/main.js.map +0 -1
  215. package/dist/dev/next-version.d.ts.map +0 -1
  216. package/dist/dev/next-version.js.map +0 -1
  217. package/dist/dev/slow-tests.d.ts.map +0 -1
  218. package/dist/dev/slow-tests.js.map +0 -1
  219. package/dist/dev/test-matrix.d.ts.map +0 -1
  220. package/dist/dev/test-matrix.js.map +0 -1
  221. package/dist/drain.d.ts.map +0 -1
  222. package/dist/drain.js.map +0 -1
  223. package/dist/errors.d.ts.map +0 -1
  224. package/dist/errors.js.map +0 -1
  225. package/dist/executable.d.ts.map +0 -1
  226. package/dist/executable.js.map +0 -1
  227. package/dist/exit-codes.d.ts.map +0 -1
  228. package/dist/exit-codes.js.map +0 -1
  229. package/dist/failure.d.ts.map +0 -1
  230. package/dist/failure.js.map +0 -1
  231. package/dist/http/body.d.ts.map +0 -1
  232. package/dist/http/body.js.map +0 -1
  233. package/dist/http/index.d.ts.map +0 -1
  234. package/dist/http/index.js.map +0 -1
  235. package/dist/index.d.ts.map +0 -1
  236. package/dist/index.js.map +0 -1
  237. package/dist/keyring.d.ts.map +0 -1
  238. package/dist/keyring.js.map +0 -1
  239. package/dist/logger.d.ts.map +0 -1
  240. package/dist/logger.js.map +0 -1
  241. package/dist/logging.d.ts.map +0 -1
  242. package/dist/logging.js.map +0 -1
  243. package/dist/mcp/index.d.ts.map +0 -1
  244. package/dist/mcp/index.js.map +0 -1
  245. package/dist/output-buffer.d.ts.map +0 -1
  246. package/dist/output-buffer.js.map +0 -1
  247. package/dist/paths.d.ts.map +0 -1
  248. package/dist/paths.js.map +0 -1
  249. package/dist/pretty.d.ts.map +0 -1
  250. package/dist/pretty.js.map +0 -1
  251. package/dist/query/dates.d.ts.map +0 -1
  252. package/dist/query/dates.js.map +0 -1
  253. package/dist/query/evaluate.d.ts.map +0 -1
  254. package/dist/query/evaluate.js.map +0 -1
  255. package/dist/query/fields.d.ts.map +0 -1
  256. package/dist/query/fields.js.map +0 -1
  257. package/dist/query/help.d.ts.map +0 -1
  258. package/dist/query/help.js.map +0 -1
  259. package/dist/query/index.d.ts.map +0 -1
  260. package/dist/query/index.js.map +0 -1
  261. package/dist/query/parser.d.ts.map +0 -1
  262. package/dist/query/parser.js.map +0 -1
  263. package/dist/query/registry.d.ts.map +0 -1
  264. package/dist/query/registry.js.map +0 -1
  265. package/dist/query/types.d.ts.map +0 -1
  266. package/dist/query/types.js.map +0 -1
  267. package/dist/query/validate.d.ts.map +0 -1
  268. package/dist/query/validate.js.map +0 -1
  269. package/dist/release/fold.d.ts.map +0 -1
  270. package/dist/release/fold.js.map +0 -1
  271. package/dist/release/index.d.ts.map +0 -1
  272. package/dist/release/index.js.map +0 -1
  273. package/dist/release/markdown.d.ts.map +0 -1
  274. package/dist/release/markdown.js.map +0 -1
  275. package/dist/release/structure.d.ts.map +0 -1
  276. package/dist/release/structure.js.map +0 -1
  277. package/dist/renderer.d.ts.map +0 -1
  278. package/dist/renderer.js.map +0 -1
  279. package/dist/result-fields.d.ts.map +0 -1
  280. package/dist/result-fields.js.map +0 -1
  281. package/dist/retry.d.ts.map +0 -1
  282. package/dist/retry.js.map +0 -1
  283. package/dist/sanitize.d.ts.map +0 -1
  284. package/dist/sanitize.js.map +0 -1
  285. package/dist/skill/index.d.ts.map +0 -1
  286. package/dist/skill/index.js.map +0 -1
  287. package/dist/standards/audit.d.ts.map +0 -1
  288. package/dist/standards/audit.js.map +0 -1
  289. package/dist/standards/effects.d.ts.map +0 -1
  290. package/dist/standards/effects.js.map +0 -1
  291. package/dist/standards/errors.d.ts.map +0 -1
  292. package/dist/standards/errors.js.map +0 -1
  293. package/dist/standards/fields.d.ts.map +0 -1
  294. package/dist/standards/fields.js.map +0 -1
  295. package/dist/standards/flags-how.d.ts.map +0 -1
  296. package/dist/standards/flags-how.js.map +0 -1
  297. package/dist/standards/flags-what.d.ts.map +0 -1
  298. package/dist/standards/flags-what.js.map +0 -1
  299. package/dist/standards/identifiers.d.ts.map +0 -1
  300. package/dist/standards/identifiers.js.map +0 -1
  301. package/dist/standards/index.d.ts.map +0 -1
  302. package/dist/standards/index.js.map +0 -1
  303. package/dist/standards/lint.d.ts.map +0 -1
  304. package/dist/standards/lint.js.map +0 -1
  305. package/dist/standards/log.d.ts.map +0 -1
  306. package/dist/standards/log.js.map +0 -1
  307. package/dist/standards/output.d.ts.map +0 -1
  308. package/dist/standards/output.js.map +0 -1
  309. package/dist/standards/registry.d.ts.map +0 -1
  310. package/dist/standards/registry.js.map +0 -1
  311. package/dist/standards/steps.d.ts.map +0 -1
  312. package/dist/standards/steps.js.map +0 -1
  313. package/dist/standards/tables.d.ts.map +0 -1
  314. package/dist/standards/tables.js.map +0 -1
  315. package/dist/standards/vocabulary.d.ts.map +0 -1
  316. package/dist/standards/vocabulary.js.map +0 -1
  317. package/dist/streams.d.ts.map +0 -1
  318. package/dist/streams.js.map +0 -1
  319. package/dist/testing/index.d.ts.map +0 -1
  320. package/dist/testing/index.js.map +0 -1
  321. package/dist/testing/network.d.ts.map +0 -1
  322. package/dist/testing/network.js.map +0 -1
  323. package/dist/testing/sandbox.d.ts.map +0 -1
  324. package/dist/testing/sandbox.js.map +0 -1
  325. package/dist/testing/setup.d.ts.map +0 -1
  326. package/dist/testing/setup.js.map +0 -1
  327. package/dist/time.d.ts.map +0 -1
  328. package/dist/time.js.map +0 -1
  329. package/dist/update/index.d.ts.map +0 -1
  330. package/dist/update/index.js.map +0 -1
@@ -51,4 +51,3 @@ export interface FieldAnnotations {
51
51
  * boolean → bool, `reference` → ref; an array takes its item's type. Objects and records are not fields.
52
52
  */
53
53
  export declare const queryFieldsOf: (schema: v.GenericSchema, annotations?: FieldAnnotations) => FieldSpec[];
54
- //# sourceMappingURL=fields.d.ts.map
@@ -84,4 +84,3 @@ export const queryFieldsOf = (schema, annotations = {}) => {
84
84
  : [];
85
85
  return [...own, ...relations, ...states];
86
86
  };
87
- //# sourceMappingURL=fields.js.map
@@ -2,4 +2,3 @@ import type { QueryRegistry } from "./fields.js";
2
2
  export declare const QUERY_SYNTAX = "field:value \u00B7 \"a phrase\" \u00B7 word* \u00B7 AND OR NOT \u00B7 ( ) \u00B7 [a TO b] \u00B7 > >= < <=";
3
3
  /** The Fields section of a list's help: one line per field it filters by, its defaults, the syntax and the guide. */
4
4
  export declare const fieldsHelp: (registry: Pick<QueryRegistry, "fields" | "defaults"> & Partial<Pick<QueryRegistry, "backend">>, guide?: string) => string;
5
- //# sourceMappingURL=help.d.ts.map
@@ -15,4 +15,3 @@ export const fieldsHelp = (registry, guide) => {
15
15
  ...(guide ? [`Guide: ${guide}`] : []),
16
16
  ].join("\n");
17
17
  };
18
- //# sourceMappingURL=help.js.map
@@ -10,4 +10,3 @@ export { implicitTextTerms, type ParseOptions, parseLucene } from "./parser.js";
10
10
  export { defineQuery, describeQuery, exampleProblems, type FieldInfo, QUERY_REASONS, type QueryInfo, } from "./registry.js";
11
11
  export { type Occur, type Operator, type Predicate, QUERY_LIMITS, type QueryAst, type QueryContext, type QueryNode, queryAstSchema, queryError, queryNodeSchema, type Span, walkQuery, } from "./types.js";
12
12
  export { fieldsNamed, type ValidateOptions, validateQuery } from "./validate.js";
13
- //# sourceMappingURL=index.d.ts.map
@@ -10,4 +10,3 @@ export { implicitTextTerms, parseLucene } from "./parser.js";
10
10
  export { defineQuery, describeQuery, exampleProblems, QUERY_REASONS, } from "./registry.js";
11
11
  export { QUERY_LIMITS, queryAstSchema, queryError, queryNodeSchema, walkQuery, } from "./types.js";
12
12
  export { fieldsNamed, validateQuery } from "./validate.js";
13
- //# sourceMappingURL=index.js.map
@@ -6,4 +6,3 @@ export interface ParseOptions extends QueryContext {
6
6
  export declare const parseLucene: (text: string, { defaultField, ...context }?: ParseOptions) => QueryAst;
7
7
  /** Bare terms eligible for forgiving retrieval; explicit syntax keeps strict semantics. */
8
8
  export declare const implicitTextTerms: (text: string) => Set<number>;
9
- //# sourceMappingURL=parser.d.ts.map
@@ -320,4 +320,3 @@ export const implicitTextTerms = (text) => {
320
320
  ? [token.span.start]
321
321
  : []));
322
322
  };
323
- //# sourceMappingURL=parser.js.map
@@ -20,4 +20,3 @@ export declare const QUERY_REASONS: {
20
20
  details: string[];
21
21
  step?: string | undefined;
22
22
  }[];
23
- //# sourceMappingURL=registry.d.ts.map
@@ -74,4 +74,3 @@ export const QUERY_REASONS = defineReasons([
74
74
  message,
75
75
  details: [...SPAN, ...details],
76
76
  })));
77
- //# sourceMappingURL=registry.js.map
@@ -50,4 +50,3 @@ export interface QueryContext {
50
50
  }
51
51
  export declare function queryError(reason: string, span: Span, alternative?: string, context?: QueryContext, details?: Record<string, unknown>): never;
52
52
  export declare const walkQuery: (node: QueryNode) => Predicate[];
53
- //# sourceMappingURL=types.d.ts.map
@@ -41,4 +41,3 @@ export function queryError(reason, span, alternative, context = {}, details = {}
41
41
  });
42
42
  }
43
43
  export const walkQuery = (node) => node.kind === "predicate" ? [node] : node.clauses.flatMap(({ node }) => walkQuery(node));
44
- //# sourceMappingURL=types.js.map
@@ -8,4 +8,3 @@ export interface ValidateOptions extends QueryContext {
8
8
  export declare const validateQuery: (ast: QueryAst, registry: QueryRegistry, options?: ValidateOptions) => QueryAst;
9
9
  /** The fields a query names, so a default on a field the query names is lifted. */
10
10
  export declare const fieldsNamed: (ast: QueryAst) => Set<string>;
11
- //# sourceMappingURL=validate.d.ts.map
@@ -79,4 +79,3 @@ export const validateQuery = (ast, registry, options = {}) => {
79
79
  };
80
80
  /** The fields a query names, so a default on a field the query names is lifted. */
81
81
  export const fieldsNamed = (ast) => new Set(walkQuery(ast.root).map((node) => node.field));
82
- //# sourceMappingURL=validate.js.map
@@ -13,4 +13,3 @@ export declare const foldUnreleased: (text: string, version: string, unreleased?
13
13
  * when no heading repeats there. The caller makes sure the version is not on npm.
14
14
  */
15
15
  export declare const mergeRepeatedHeadings: (text: string, version: string) => string | undefined;
16
- //# sourceMappingURL=fold.d.ts.map
@@ -66,4 +66,3 @@ export const mergeRepeatedHeadings = (text, version) => {
66
66
  return undefined;
67
67
  return [preamble, render(section.title, [section]), ...rest].join("\n");
68
68
  };
69
- //# sourceMappingURL=fold.js.map
@@ -36,4 +36,3 @@ export declare const versionScript: (root: string, argv: readonly string[], file
36
36
  code: 0 | 1 | 2;
37
37
  message: string;
38
38
  };
39
- //# sourceMappingURL=index.d.ts.map
@@ -89,4 +89,3 @@ export const versionScript = (root, argv, file = "src/version.ts") => {
89
89
  };
90
90
  return { code: 0, message: `version ${declared} — package.json and ${file} agree` };
91
91
  };
92
- //# sourceMappingURL=index.js.map
@@ -38,4 +38,3 @@ export type DocsRules = {
38
38
  skipLink?: (target: string, destination: string) => boolean;
39
39
  };
40
40
  export declare const docsProblems: (root: string, { files, ids, userPage, correction, skipLink }: DocsRules) => string[];
41
- //# sourceMappingURL=markdown.d.ts.map
@@ -167,4 +167,3 @@ export const docsProblems = (root, { files, ids, userPage = () => false, correct
167
167
  }
168
168
  return problems;
169
169
  };
170
- //# sourceMappingURL=markdown.js.map
@@ -13,4 +13,3 @@ export type StructureRules = {
13
13
  * is the contributors' index and stays out of the sidebar.
14
14
  */
15
15
  export declare const structureProblems: (root: string, { docs, required, external }?: StructureRules) => string[];
16
- //# sourceMappingURL=structure.d.ts.map
@@ -71,4 +71,3 @@ export const structureProblems = (root, { docs = "docs", required = REQUIRED_PAG
71
71
  }
72
72
  return problems;
73
73
  };
74
- //# sourceMappingURL=structure.js.map
@@ -31,4 +31,3 @@ export interface RendererOptions {
31
31
  * output still gives you the content and not the commentary.
32
32
  */
33
33
  export declare const createRenderer: ({ format, color, streams, quiet, }: RendererOptions) => Renderer;
34
- //# sourceMappingURL=renderer.d.ts.map
package/dist/renderer.js CHANGED
@@ -52,4 +52,3 @@ export const createRenderer = ({ format, color, streams = processStreams, quiet
52
52
  stream: (items) => streams.data(JSON.stringify([...items])),
53
53
  };
54
54
  };
55
- //# sourceMappingURL=renderer.js.map
@@ -1,4 +1,3 @@
1
1
  export declare const fieldsOf: (value: string) => string[];
2
2
  /** Projects payload paths through objects and arrays, retaining result coverage and continuation. */
3
3
  export declare const projectFields: (value: unknown, fields: readonly string[]) => unknown;
4
- //# sourceMappingURL=result-fields.d.ts.map
@@ -77,4 +77,3 @@ export const projectFields = (value, fields) => {
77
77
  validate(fields);
78
78
  return project(value, fields);
79
79
  };
80
- //# sourceMappingURL=result-fields.js.map
package/dist/retry.d.ts CHANGED
@@ -15,4 +15,3 @@ export declare const DEFAULT_RETRY: RetryConfig;
15
15
  * `attempt` is the attempt that just failed, counting from 1.
16
16
  */
17
17
  export declare const backoffMs: (attempt: number, config: RetryConfig, random: () => number) => number;
18
- //# sourceMappingURL=retry.d.ts.map
package/dist/retry.js CHANGED
@@ -15,4 +15,3 @@ export const backoffMs = (attempt, config, random) => {
15
15
  const ceiling = Math.min(config.maxDelayMs, config.baseDelayMs * 2 ** (attempt - 1));
16
16
  return Math.round(random() * ceiling);
17
17
  };
18
- //# sourceMappingURL=retry.js.map
@@ -22,4 +22,3 @@ export declare const visibleControls: (text: string) => string;
22
22
  * sender's name would otherwise print as a line of its own, indistinguishable from real output.
23
23
  */
24
24
  export declare const singleLine: (text: string) => string;
25
- //# sourceMappingURL=sanitize.d.ts.map
package/dist/sanitize.js CHANGED
@@ -49,4 +49,3 @@ export const visibleControls = (text) => {
49
49
  * sender's name would otherwise print as a line of its own, indistinguishable from real output.
50
50
  */
51
51
  export const singleLine = (text) => visibleControls(text).replace(LINE_BREAKS, escaped);
52
- //# sourceMappingURL=sanitize.js.map
@@ -75,4 +75,3 @@ export interface SkillResource {
75
75
  */
76
76
  export declare const skillResource: (app: SkillApp, skill: URL) => SkillResource;
77
77
  export {};
78
- //# sourceMappingURL=index.d.ts.map
@@ -185,4 +185,3 @@ export const skillResource = (app, skill) => {
185
185
  instruction: `- The full guide is the resource ${uri}; \`${app.command} skill install\` installs it as an agent skill.`,
186
186
  };
187
187
  };
188
- //# sourceMappingURL=index.js.map
@@ -37,4 +37,3 @@ export type RequiredRoot = v.InferOutput<typeof requiredRootSchema>;
37
37
  export declare const defineRequiredRoots: (input: unknown) => RequiredRoot[];
38
38
  export declare const REQUIRED_ROOTS: RequiredRoot[];
39
39
  export {};
40
- //# sourceMappingURL=audit.d.ts.map
@@ -69,4 +69,3 @@ export const REQUIRED_ROOTS = defineRequiredRoots([
69
69
  { path: ["mcp"], meaning: "the MCP server" },
70
70
  { path: ["upgrade"], meaning: "updates the CLI" },
71
71
  ]);
72
- //# sourceMappingURL=audit.js.map
@@ -9,4 +9,3 @@ export type Effects = v.InferOutput<typeof effectsSchema>;
9
9
  export type EffectLevel = (typeof EFFECT_LEVELS)[number];
10
10
  /** Unknown effects count as a write: a command nobody described is never retried or run on its own. */
11
11
  export declare const writes: (effects: Effects | undefined) => boolean;
12
- //# sourceMappingURL=effects.d.ts.map
@@ -7,4 +7,3 @@ export const effectsSchema = v.strictObject({
7
7
  });
8
8
  /** Unknown effects count as a write: a command nobody described is never retried or run on its own. */
9
9
  export const writes = (effects) => effects === undefined || effects.remote === "write" || effects.local === "write";
10
- //# sourceMappingURL=effects.js.map
@@ -70,4 +70,3 @@ export declare const COMMON_DETAILS: readonly ["attempts", "status", "request_id
70
70
  /** One reason per code, used when the code site named none, the crash, and the reasons cli-base raises itself. */
71
71
  export declare const BASE_REASONS: ErrorReason[];
72
72
  export {};
73
- //# sourceMappingURL=errors.d.ts.map
@@ -94,4 +94,3 @@ export const BASE_REASONS = defineReasons([
94
94
  { reason: "command.cancelled", code: "cancelled", message: "the command was cancelled", details: [] },
95
95
  { reason: CRASH_REASON, code: CRASH_CODE, message: "the command failed; this is a bug", details: [] },
96
96
  ]);
97
- //# sourceMappingURL=errors.js.map
@@ -7,4 +7,3 @@ export type FieldRule = v.InferOutput<typeof fieldRuleSchema>;
7
7
  export declare const defineFieldRules: (input: unknown) => FieldRule[];
8
8
  export declare const FIELD_RULES: FieldRule[];
9
9
  export {};
10
- //# sourceMappingURL=fields.d.ts.map
@@ -14,4 +14,3 @@ export const FIELD_RULES = defineFieldRules([
14
14
  rule: "absent: not asked for or not known; `null`: known to have no value; `[]`: known to be empty, never `null`; `0`: measured, never a stand-in for unknown",
15
15
  },
16
16
  ]);
17
- //# sourceMappingURL=fields.js.map
@@ -1,3 +1,2 @@
1
1
  import type { VocabularyFlag } from "./vocabulary.js";
2
2
  export declare const HOW_FLAGS: VocabularyFlag[];
3
- //# sourceMappingURL=flags-how.d.ts.map
@@ -965,4 +965,3 @@ export const HOW_FLAGS = [
965
965
  meaning: "how returned cell values are represented: formatted display values, unformatted values or formulas",
966
966
  },
967
967
  ];
968
- //# sourceMappingURL=flags-how.js.map
@@ -1,3 +1,2 @@
1
1
  import type { VocabularyFlag } from "./vocabulary.js";
2
2
  export declare const WHAT_FLAGS: VocabularyFlag[];
3
- //# sourceMappingURL=flags-what.d.ts.map
@@ -833,4 +833,3 @@ export const WHAT_FLAGS = [
833
833
  meaning: "cell values as JSON rows for an explicit range update or row append; not a list filter",
834
834
  },
835
835
  ];
836
- //# sourceMappingURL=flags-what.js.map
@@ -9,4 +9,3 @@ export declare const defineIdentifiers: (input: unknown) => Identifier[];
9
9
  /** The ids a CLI's answers, errors and logs carry; one name each. */
10
10
  export declare const IDENTIFIERS: Identifier[];
11
11
  export {};
12
- //# sourceMappingURL=identifiers.d.ts.map
@@ -21,4 +21,3 @@ export const IDENTIFIERS = defineIdentifiers([
21
21
  { key: "request_id", meaning: "the provider's own reference for one request, as it sent it" },
22
22
  { key: "trace_id", meaning: "the distributed trace a run belongs to, from `traceparent`" },
23
23
  ]);
24
- //# sourceMappingURL=identifiers.js.map
@@ -4,4 +4,3 @@ export { defineLogEvents, isContentKey, LOG_ATTRIBUTE_KEYS, LOG_EVENTS, LOG_SEVE
4
4
  export { type Issue, type ItemEnvelope, isoTime, issueSchema, itemEnvelopeSchema, jsonlEndSchema, jsonlItemSchema, jsonlOf, type ListEnvelope, listEnvelopeSchema, MAX_NEXT_STEPS, type Meta, type Missing, metaSchema, missingSchema, type NextStep, nextStepSchema, type Page, pageSchema, reference, } from "./output.js";
5
5
  export { fill, jsonSchemaOf, RegistryError } from "./registry.js";
6
6
  export { defineSteps, SAME_COMMAND, STEPS, type StepDefinition, type StepInput, type StepTarget, stepOf, } from "./steps.js";
7
- //# sourceMappingURL=index.d.ts.map
@@ -4,4 +4,3 @@ export { defineLogEvents, isContentKey, LOG_ATTRIBUTE_KEYS, LOG_EVENTS, LOG_SEVE
4
4
  export { isoTime, issueSchema, itemEnvelopeSchema, jsonlEndSchema, jsonlItemSchema, jsonlOf, listEnvelopeSchema, MAX_NEXT_STEPS, metaSchema, missingSchema, nextStepSchema, pageSchema, reference, } from "./output.js";
5
5
  export { fill, jsonSchemaOf, RegistryError } from "./registry.js";
6
6
  export { defineSteps, SAME_COMMAND, STEPS, stepOf, } from "./steps.js";
7
- //# sourceMappingURL=index.js.map
@@ -37,4 +37,3 @@ export declare const rulesForReview: (lists: readonly (readonly Override[])[]) =
37
37
  overrides: number;
38
38
  }[];
39
39
  export {};
40
- //# sourceMappingURL=lint.d.ts.map
@@ -144,4 +144,3 @@ export const rulesForReview = (lists) => {
144
144
  .map(([rule, overrides]) => ({ rule, overrides }))
145
145
  .sort((a, b) => b.overrides - a.overrides || (a.rule < b.rule ? -1 : 1));
146
146
  };
147
- //# sourceMappingURL=lint.js.map
@@ -48,4 +48,3 @@ export declare const logAttributesJsonSchema: (allow?: readonly string[]) => Rec
48
48
  */
49
49
  export declare const traceIdOf: (traceparent: unknown) => string | undefined;
50
50
  export {};
51
- //# sourceMappingURL=log.d.ts.map
@@ -112,4 +112,3 @@ export const traceIdOf = (traceparent) => {
112
112
  return undefined;
113
113
  return traceId;
114
114
  };
115
- //# sourceMappingURL=log.js.map
@@ -220,4 +220,3 @@ export declare const jsonlEndSchema: v.StrictObjectSchema<{
220
220
  }, undefined>;
221
221
  /** A list answer as JSON lines, the end line last. */
222
222
  export declare const jsonlOf: <T>({ items, page, meta }: ListEnvelope<T>) => string;
223
- //# sourceMappingURL=output.d.ts.map
@@ -88,4 +88,3 @@ export const jsonlOf = ({ items, page, meta }) => [
88
88
  ...items.map((data) => JSON.stringify({ type: "item", data })),
89
89
  JSON.stringify({ type: "end", complete: meta.complete, ...(meta.issues ? { issues: meta.issues } : {}), page }),
90
90
  ].join("\n");
91
- //# sourceMappingURL=output.js.map
@@ -17,4 +17,3 @@ export declare const jsonSchemaOf: (schema: v.GenericSchema, definitions?: Recor
17
17
  export declare const placeholders: (template: string) => string[];
18
18
  /** Fills `{name}` from `values`; a placeholder with no value throws, so a half-filled sentence never ships. */
19
19
  export declare const fill: (template: string, values: Readonly<Record<string, string | number>>) => string;
20
- //# sourceMappingURL=registry.d.ts.map
@@ -40,4 +40,3 @@ export const fill = (template, values) => template.replace(PLACEHOLDER, (_, name
40
40
  throw new Error(`no value for {${name}} in "${template}"`);
41
41
  return String(value);
42
42
  });
43
- //# sourceMappingURL=registry.js.map
@@ -43,4 +43,3 @@ export declare const stepOf: (definition: StepDefinition, input?: StepInput) =>
43
43
  /** The steps every CLI has; each package adds its own with `defineSteps`. */
44
44
  export declare const STEPS: StepDefinition[];
45
45
  export {};
46
- //# sourceMappingURL=steps.d.ts.map
@@ -85,4 +85,3 @@ export const STEPS = defineSteps([
85
85
  why: "{shown} shown, more exist",
86
86
  },
87
87
  ]);
88
- //# sourceMappingURL=steps.js.map
@@ -3,4 +3,3 @@ export { defineFieldRules, FIELD_RULES, type FieldRule } from "./fields.js";
3
3
  export { defineIdentifiers, IDENTIFIERS, type Identifier } from "./identifiers.js";
4
4
  export { baselineProblems, baselineSchema, defineLintRules, LINT_RULES, LINT_SEVERITIES, type LintRule, type LintSeverity, OVERRIDE_BUDGET, OVERRIDE_RULE_REVIEW, type Override, overridesProblems, overridesSchema, rulesForReview, } from "./lint.js";
5
5
  export { defineVocabulary, FLAG_ROLES, FLAG_TYPES, type FlagRole, type FlagType, VOCABULARY, type Vocabulary, type VocabularyFlag, type VocabularyNoun, type VocabularyVerb, vocabularySchema, } from "./vocabulary.js";
6
- //# sourceMappingURL=tables.d.ts.map
@@ -3,4 +3,3 @@ export { defineFieldRules, FIELD_RULES } from "./fields.js";
3
3
  export { defineIdentifiers, IDENTIFIERS } from "./identifiers.js";
4
4
  export { baselineProblems, baselineSchema, defineLintRules, LINT_RULES, LINT_SEVERITIES, OVERRIDE_BUDGET, OVERRIDE_RULE_REVIEW, overridesProblems, overridesSchema, rulesForReview, } from "./lint.js";
5
5
  export { defineVocabulary, FLAG_ROLES, FLAG_TYPES, VOCABULARY, vocabularySchema, } from "./vocabulary.js";
6
- //# sourceMappingURL=tables.js.map
@@ -57,4 +57,3 @@ export type FlagType = (typeof FLAG_TYPES)[number];
57
57
  export declare const defineVocabulary: (input: unknown) => Vocabulary;
58
58
  /** The words every CLI on cli-base is judged against. Seeded from STANDARD's command-name rules and the glossary. */
59
59
  export declare const VOCABULARY: Vocabulary;
60
- //# sourceMappingURL=vocabulary.d.ts.map
@@ -277,6 +277,7 @@ const roots = [
277
277
  ["doctor", "check this machine's setup"],
278
278
  ["upgrade", "install a newer version of this tool"],
279
279
  ["commands", "the command tree as data"],
280
+ ["guide", "scenarios: the commands for a common task, in order, and why each"],
280
281
  ["complete", "shell completion"],
281
282
  ["mcp", "the MCP server and its setup"],
282
283
  ["bot", "the profile's bot account"],
@@ -298,4 +299,3 @@ export const VOCABULARY = defineVocabulary({
298
299
  roots: roots.map(([entry, meaning]) => ({ word: entry, meaning })),
299
300
  flags: [...HOW_FLAGS, ...WHAT_FLAGS],
300
301
  });
301
- //# sourceMappingURL=vocabulary.js.map
package/dist/streams.d.ts CHANGED
@@ -22,4 +22,3 @@ export declare const captureStreams: () => Streams & {
22
22
  stdout: string[];
23
23
  stderr: string[];
24
24
  };
25
- //# sourceMappingURL=streams.d.ts.map
package/dist/streams.js CHANGED
@@ -27,4 +27,3 @@ export const captureStreams = () => {
27
27
  progress: (text) => stderr.push(text),
28
28
  };
29
29
  };
30
- //# sourceMappingURL=streams.js.map
@@ -25,4 +25,3 @@ export interface FakeClock {
25
25
  * test nobody runs, so `sleep` resolves at once and records what it was asked for.
26
26
  */
27
27
  export declare const fakeClock: (startMs?: number) => FakeClock;
28
- //# sourceMappingURL=index.d.ts.map
@@ -34,4 +34,3 @@ export const fakeClock = (startMs = 0) => {
34
34
  },
35
35
  };
36
36
  };
37
- //# sourceMappingURL=index.js.map
@@ -12,4 +12,3 @@ export declare const installNetworkGuard: () => void;
12
12
  * `onTestFinished(allowNetwork())`. For the rare test whose subject is the network itself.
13
13
  */
14
14
  export declare const allowNetwork: () => (() => void);
15
- //# sourceMappingURL=network.d.ts.map
@@ -114,4 +114,3 @@ export const allowNetwork = () => {
114
114
  state().allowed--;
115
115
  };
116
116
  };
117
- //# sourceMappingURL=network.js.map
@@ -21,4 +21,3 @@ export declare const REAL_KEYRING_REACHED = "a test reached the real OS keyring
21
21
  * `keyring.ts` loads) and from the working directory (a CLI's own copy). Never removed.
22
22
  */
23
23
  export declare const installThrowingKeyring: () => void;
24
- //# sourceMappingURL=sandbox.d.ts.map
@@ -127,4 +127,3 @@ export const installThrowingKeyring = () => {
127
127
  };
128
128
  }
129
129
  };
130
- //# sourceMappingURL=sandbox.js.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=setup.d.ts.map
@@ -10,4 +10,3 @@ const sandbox = enterSandbox();
10
10
  installThrowingKeyring();
11
11
  installNetworkGuard();
12
12
  afterAll(() => sandbox.restore());
13
- //# sourceMappingURL=setup.js.map
package/dist/time.d.ts CHANGED
@@ -18,4 +18,3 @@ export declare const abortError: () => DOMException;
18
18
  export declare const realSleep: SleepLike;
19
19
  export declare const monotonic: MonotonicClock;
20
20
  export declare const wallClock: WallClock;
21
- //# sourceMappingURL=time.d.ts.map
package/dist/time.js CHANGED
@@ -16,4 +16,3 @@ export const realSleep = (ms, signal) => new Promise((resolve, reject) => {
16
16
  });
17
17
  export const monotonic = () => performance.now();
18
18
  export const wallClock = () => new Date();
19
- //# sourceMappingURL=time.js.map
@@ -75,4 +75,3 @@ export interface NoticeRequest extends NotifyContext {
75
75
  * and awaited after it, so asking npm costs the command nothing; any failure is silence.
76
76
  */
77
77
  export declare const updateNotice: ({ argv, packageName, command, upgradeCommand, version, statePath, fetch, now, ...context }: NoticeRequest) => Promise<string | undefined>;
78
- //# sourceMappingURL=index.d.ts.map
@@ -165,4 +165,3 @@ const commandWords = (argv) => {
165
165
  const end = argv.indexOf("--");
166
166
  return argv.slice(0, end < 0 ? undefined : end).filter((word) => !word.startsWith("-"));
167
167
  };
168
- //# sourceMappingURL=index.js.map
@@ -65,7 +65,9 @@ cli-testing, cli-docs, plus community itself.
65
65
  ### WC-CI-5 · Run the full Linux validation on every pull request, and keep platform suites out
66
66
 
67
67
  - **Why:** a pull request that lowers coverage or breaks a contract must fail before it merges; once on `main` it
68
- blocks every other branch and the next release. It costs about two and a half minutes per pull request.
68
+ blocks every other branch and the next release. It costs 2–3 minutes per pull request in the CLIs (measured: wa
69
+ 2.9, tg 2.2, max 3.0) and about 8 in cli-core, where `test:coverage` alone takes 5m46s; splitting that job into
70
+ shards would need a new `node-ci.yml` input.
69
71
  - **Enforced by:** `pr.yml:validation`.
70
72
  - **Example:** `pr.yml` runs on `pull_request` and calls the repository's own `ci.yml`, the same full validation as
71
73
  `main` (WC-CI-7): lint, typecheck, `test:coverage` with the coverage floor, build, the contracts, the test matrix,
@@ -93,8 +95,8 @@ cli-testing, cli-docs, plus community itself.
93
95
  cli-base `macos.yml` for the path code. cli-docs and community run `security-pr.yml`, a new-commit secret scan;
94
96
  cli-docs validates its site before each deployment instead, and community has no build. Third-party security apps
95
97
  may post their own checks.
96
- - **Applies to:** the CLIs, cli-base, cli-core and cli-testing. cli-base has `pr.yml`; wa adds it in its
97
- `ci/pr-validation` branch; tg, max, memo, drive, zoom, cli-core and cli-testing do not have it yet. **Since:**
98
+ - **Applies to:** the CLIs, cli-base, cli-core and cli-testing. cli-base, whatsapp-cli, tg-cli, max-cli, cli-core
99
+ and cli-memo have `pr.yml`; drive-cli, zoom-cli and cli-testing do not have it yet. **Since:**
98
100
  cli-base 0.41.0 (pull request validation since cli-base 0.44.6). **Rulings:** none.
99
101
 
100
102
  ### WC-CI-6 · Run the changelog guard on every pull request
@@ -164,7 +166,11 @@ cli-testing, cli-docs, plus community itself.
164
166
  ### WC-CI-12 · Merge to `main` only through a pull request whose checks all passed
165
167
 
166
168
  - **Why:** a red merge breaks `main` for every parallel branch, and an admin merge skips the only gate there is.
167
- - **Enforced by:** review only.
169
+ - **Enforced by:** `whatsapp-cli: main ruleset required checks` · `cli-core: main ruleset required checks` ·
170
+ `tg-cli: main ruleset required checks` · `max-cli: main ruleset required checks` ·
171
+ `cli-memo: main ruleset required checks`, plus the main ruleset of cli-base itself. In each repository with pr.yml,
172
+ the ruleset requires the pull request validation jobs besides the standards job. drive-cli, zoom-cli, cli-testing
173
+ and cli-docs have no pr.yml, so their rulesets require only the standards job, and review covers the rest.
168
174
  - **Example:** `gh pr checks <number>` shows every line as pass before `gh pr merge`. Never merge with `--admin`. A
169
175
  release changes `main` the same way
170
176
  ([WC-REL-2](releases.md#wc-rel-2--main-changes-only-through-a-pull-request-also-during-a-release)).
@@ -24,7 +24,8 @@ Rule ids on this page are `WC-LAY-<n>`. How to read a rule, how ids work and whi
24
24
  - `contracts/`: the offline contract plan and its snapshots;
25
25
  - `config/wirecat/`: the shared presets;
26
26
  - `skills/`: the agent skill the package ships;
27
- - `CHANGELOG.md`, `CLAUDE.md`, `CLEANUP.md`, `SECURITY.md`, `README.md`, `LICENSE`.
27
+ - `CHANGELOG.md`, `CLAUDE.md`, `SECURITY.md`, `README.md`, `LICENSE`;
28
+ - git-ignored, on the working machine only: `CLEANUP.md`, `HANDOFF.md`, plans and journals.
28
29
  - **Exceptions:** a folder the CLI has no use for may be missing; memo has no `contracts/` yet. A product folder may
29
30
  be added, such as `spec/` for a protocol or API description.
30
31
  - **Applies to:** all CLIs. **Since:** cli-base 0.41.0. **Rulings:** none.
@@ -22,7 +22,9 @@ has its own policy and guard, with its own `--read-only` flag; zoom only reads.
22
22
  writes", drive is a known gap.
23
23
 
24
24
  WC-PERM-10 and WC-PERM-11 need cli-core 0.321.0, which tg, max and wa pin. WC-PERM-12 as written needs cli-core
25
- 0.337.0; before it, the lock let through some local writes that overwrite what the owner saved.
25
+ 0.337.0; before it, the lock let through some local writes that overwrite what the owner saved. A command other
26
+ than `serve` and `watch` saves incoming history only from cli-core 0.343.0, and only when the messenger's adapter has
27
+ `listen`. wa is the one messenger whose history lives in the store; it pins 0.341.0 and has no `listen` yet.
26
28
 
27
29
  ## Rules
28
30
 
@@ -181,14 +183,15 @@ recipient list) are refused too. A `--dry-run` preview still runs.
181
183
  - **Why:** an unattended agent needs one switch that the config file and `--permission` cannot undo, and that also
182
184
  keeps it from deleting or overwriting what the owner saved here.
183
185
  - **Enforced by:** `cli-core: src/cli/effects.test.ts` · `cli-core: src/mcp/vocabulary.test.ts` ·
184
- `cli-core: src/mcp/mcp.test.ts`.
186
+ `cli-core: src/mcp/mcp.test.ts` · `cli-core: src/cli/messenger/connected.test.ts`.
185
187
  - **Example:** `schedule` starts an agent with `MAX_READ_ONLY=1`. It reads, drafts and adds tasks; `tags add` and
186
188
  `messages send` answer `permission_error`.
187
- - **Exceptions:** receiving goes on: syncs, fetches, and `serve` and `watch` saving incoming history. Local writes
188
- marked `destroysNothing` run: what the store rebuilds (`store reindex`, `mentions rebuild`), a new file
189
- (`store backup`, `store export`, `stats charts`), and the task writes the follow-ups skill makes on a timer, where
190
- `tasks close` only suggests the close to the owner. Embedding and analysis on this machine run; sending text to an
191
- outside service for them is refused.
189
+ - **Exceptions:** receiving goes on: syncs, fetches, and saving incoming history. `serve` and `watch` save what
190
+ arrives; on a messenger whose history lives in the store and whose adapter has the optional `listen`, so does any
191
+ other command, an MCP session included (cli-core 0.343.0). Local writes marked `destroysNothing` run: what the store
192
+ rebuilds (`store reindex`, `mentions rebuild`), a new file (`store backup`, `store export`, `stats charts`), and the
193
+ task writes the follow-ups skill makes on a timer, where `tasks close` only suggests the close to the owner.
194
+ Embedding and analysis on this machine run; sending text to an outside service for them is refused.
192
195
  - **Applies to:** messenger CLIs. **Since:** cli-base 0.41.0. **Rulings:** none.
193
196
 
194
197
  ### WC-PERM-13 · Every write passes the write guard before it leaves
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-base",
3
- "version": "0.45.0",
3
+ "version": "0.46.0",
4
4
  "description": "The parts every command line tool needs: output modes, terminal rendering, error model, exit codes, credentials, clocks",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",
@@ -8,6 +8,10 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/WireCatLabs/cli-base.git"
10
10
  },
11
+ "homepage": "https://github.com/WireCatLabs/cli-base#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/WireCatLabs/cli-base/issues"
14
+ },
11
15
  "type": "module",
12
16
  "engines": {
13
17
  "node": ">=22"
@@ -18,6 +22,7 @@
18
22
  "config",
19
23
  "docs/standards",
20
24
  "README.md",
25
+ "CHANGELOG.md",
21
26
  "LICENSE",
22
27
  "THIRD_PARTY_NOTICES"
23
28
  ],
@@ -1 +0,0 @@
1
- {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAGjE,eAAO,MAAM,YAAY;;;;;EAKvB,CAAA;AAEF,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C;AACD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAChF;AACD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,cAAc,CAAA;CACrD;AACD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,cAAc,CAAA;CAC1B;AACD,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,CAC1D;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CACrG,CAAA;AACD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAeD,mFAAmF;AACnF,eAAO,MAAM,YAAY,UAAW,MAAM,YAAY,SAAS,YAAY,EAAE,KAAG,oBAAoB,EAwCnG,CAAA;AAED,eAAO,MAAM,cAAc,WACjB,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,YACjC;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAChC,OAAO,CAAC,MAAM,CAkBhB,CAAA;AAED,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,aACT,SAAS,oBAAoB,EAAE,YAChC;IACP,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B,KACA,OAAO,CAAC,WAAW,CA4ErB,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAY,WAAW,UAAU,SAAS,MAAM,EAAE,KAAG,WAKnF,CAAA"}