rhachet 1.19.13 → 1.19.15

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.
@@ -5,6 +5,7 @@ const rhachet_artifact_git_1 = require("rhachet-artifact-git");
5
5
  const discoverRolePackages_1 = require("../../domain.operations/init/discoverRolePackages");
6
6
  const generateRhachetConfig_1 = require("../../domain.operations/init/generateRhachetConfig");
7
7
  const findsertFile_1 = require("../../infra/findsertFile");
8
+ const upsertFile_1 = require("../../infra/upsertFile");
8
9
  const node_fs_1 = require("node:fs");
9
10
  const node_path_1 = require("node:path");
10
11
  /**
@@ -16,7 +17,8 @@ const invokeInit = ({ program }) => {
16
17
  program
17
18
  .command('init')
18
19
  .description('initialize rhachet.use.ts config from discovered role packages')
19
- .action(async () => {
20
+ .option('--mode <mode>', 'findsert (default) preserves existing, upsert overwrites', 'findsert')
21
+ .action(async (options) => {
20
22
  const cwd = process.cwd();
21
23
  const root = await (0, rhachet_artifact_git_1.getGitRepoRoot)({ from: cwd });
22
24
  console.log(``);
@@ -34,14 +36,17 @@ const invokeInit = ({ program }) => {
34
36
  for (const pkg of packages) {
35
37
  console.log(` - [found] ${pkg}`);
36
38
  }
39
+ // select persist function based on mode
40
+ const persistFile = options.mode === 'upsert' ? upsertFile_1.upsertFile : findsertFile_1.findsertFile;
37
41
  console.log(``);
38
- console.log(`✨ findsert rhachet resources...`);
39
- // findsert rhachet.use.ts
42
+ console.log(`✨ ${options.mode} rhachet resources...`);
43
+ // persist rhachet.use.ts (upsert or findsert based on mode)
40
44
  const configPath = (0, node_path_1.resolve)(root, 'rhachet.use.ts');
41
45
  const configContent = (0, generateRhachetConfig_1.generateRhachetConfig)({ packages });
42
- (0, findsertFile_1.findsertFile)({ cwd, path: configPath, content: configContent });
46
+ persistFile({ cwd, path: configPath, content: configContent });
43
47
  // fix legacy import syntax: `import { InvokeHook` -> `import type { InvokeHook`
44
- if ((0, node_fs_1.existsSync)(configPath)) {
48
+ // (only needed for findsert mode when existing file may have old syntax)
49
+ if (options.mode === 'findsert' && (0, node_fs_1.existsSync)(configPath)) {
45
50
  const content = (0, node_fs_1.readFileSync)(configPath, 'utf8');
46
51
  if (content.includes('import { InvokeHook')) {
47
52
  const fixed = content.replace(/import \{ InvokeHook/g, 'import type { InvokeHook');
@@ -49,11 +54,11 @@ const invokeInit = ({ program }) => {
49
54
  console.log(` ↻ [fixed] ${(0, node_path_1.relative)(cwd, configPath)} (import type)`);
50
55
  }
51
56
  }
52
- // findsert .agent/repo=.this/role=any directories and readme
57
+ // persist .agent/repo=.this/role=any directories and readme
53
58
  const roleAnyDir = (0, node_path_1.resolve)(root, '.agent', 'repo=.this', 'role=any');
54
- (0, findsertFile_1.findsertFile)({ cwd, path: (0, node_path_1.resolve)(roleAnyDir, 'briefs') });
55
- (0, findsertFile_1.findsertFile)({ cwd, path: (0, node_path_1.resolve)(roleAnyDir, 'skills') });
56
- (0, findsertFile_1.findsertFile)({
59
+ persistFile({ cwd, path: (0, node_path_1.resolve)(roleAnyDir, 'briefs') });
60
+ persistFile({ cwd, path: (0, node_path_1.resolve)(roleAnyDir, 'skills') });
61
+ persistFile({
57
62
  cwd,
58
63
  path: (0, node_path_1.resolve)(roleAnyDir, 'readme.md'),
59
64
  content: 'this role applies to any agent that works within this repo\n',
@@ -1 +1 @@
1
- {"version":3,"file":"invokeInit.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeInit.ts"],"names":[],"mappings":";;;AACA,+DAAsD;AAEtD,2FAAwF;AACxF,6FAA0F;AAC1F,0DAAuD;AAEvD,qCAAkE;AAClE,yCAA8C;AAE9C;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAwB,EAAQ,EAAE;IACpE,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,gEAAgE,CACjE;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAA,qCAAc,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,2CAAoB,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,qEAAqE,CACtE,CAAC;YACF,OAAO,CAAC,GAAG,CACT,2EAA2E,CAC5E,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAE/C,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,IAAA,6CAAqB,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAA,2BAAY,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAEhE,gFAAgF;QAChF,IAAI,IAAA,oBAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAC3B,uBAAuB,EACvB,0BAA0B,CAC3B,CAAC;gBACF,IAAA,uBAAa,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAA,oBAAQ,EAAC,GAAG,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,MAAM,UAAU,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACrE,IAAA,2BAAY,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAA,mBAAO,EAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAA,2BAAY,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAA,mBAAO,EAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAA,2BAAY,EAAC;YACX,GAAG;YACH,IAAI,EAAE,IAAA,mBAAO,EAAC,UAAU,EAAE,WAAW,CAAC;YACtC,OAAO,EAAE,8DAA8D;SACxE,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,gCAAgC,QAAQ,CAAC,MAAM,iCAAiC,CACjF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAvEW,QAAA,UAAU,cAuErB"}
1
+ {"version":3,"file":"invokeInit.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeInit.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,15 @@ const node_path_1 = require("node:path");
7
7
  * .what = recursively counts all leaf files in a directory
8
8
  * .why = to provide accurate file counts when linking directories
9
9
  */
10
- const countFilesInDirectory = (dirPath) => {
10
+ const countFilesInDirectory = (input) => {
11
+ const { dirPath } = input;
11
12
  let count = 0;
12
13
  const entries = (0, node_fs_1.readdirSync)(dirPath);
13
14
  for (const entry of entries) {
14
15
  const fullPath = (0, node_path_1.resolve)(dirPath, entry);
15
16
  const stats = (0, node_fs_1.statSync)(fullPath);
16
17
  if (stats.isDirectory()) {
17
- count += countFilesInDirectory(fullPath);
18
+ count += countFilesInDirectory({ dirPath: fullPath });
18
19
  }
19
20
  else if (stats.isFile()) {
20
21
  count++;
@@ -26,7 +27,8 @@ const countFilesInDirectory = (dirPath) => {
26
27
  * .what = recursively sets all files and directories to readonly and executable
27
28
  * .why = prevents agents from accidentally or maliciously overwriting linked resources from node_modules, while allowing skills to be executed
28
29
  */
29
- const setDirectoryReadonlyExecutable = (dirPath) => {
30
+ const setDirectoryReadonlyExecutable = (input) => {
31
+ const { dirPath } = input;
30
32
  const entries = (0, node_fs_1.readdirSync)(dirPath);
31
33
  for (const entry of entries) {
32
34
  const fullPath = (0, node_path_1.resolve)(dirPath, entry);
@@ -36,7 +38,7 @@ const setDirectoryReadonlyExecutable = (dirPath) => {
36
38
  continue;
37
39
  if (lstats.isDirectory()) {
38
40
  // recurse first, then set directory permissions
39
- setDirectoryReadonlyExecutable(fullPath);
41
+ setDirectoryReadonlyExecutable({ dirPath: fullPath });
40
42
  // r-x for directories (need execute to traverse)
41
43
  (0, node_fs_1.chmodSync)(fullPath, 0o555);
42
44
  }
@@ -48,6 +50,53 @@ const setDirectoryReadonlyExecutable = (dirPath) => {
48
50
  // set the root directory itself to readonly after processing contents
49
51
  (0, node_fs_1.chmodSync)(dirPath, 0o555);
50
52
  };
53
+ /**
54
+ * .what = remove path if it exists (symlink, file, or directory)
55
+ * .why = upsert semantics - always succeed even if target already exists, including broken symlinks
56
+ */
57
+ const clearPath = (input) => {
58
+ const { targetPath } = input;
59
+ const lstats = (() => {
60
+ try {
61
+ return (0, node_fs_1.lstatSync)(targetPath);
62
+ }
63
+ catch (error) {
64
+ if (error.code === 'ENOENT')
65
+ return null;
66
+ throw error;
67
+ }
68
+ })();
69
+ if (!lstats)
70
+ return 'created';
71
+ try {
72
+ (0, node_fs_1.unlinkSync)(targetPath);
73
+ }
74
+ catch {
75
+ (0, node_fs_1.rmSync)(targetPath, { recursive: true, force: true });
76
+ }
77
+ return 'updated';
78
+ };
79
+ /**
80
+ * .what = create a symlink from targetPath to sourcePath, clear existing, log action
81
+ * .why = shared logic for both single-dir and array-dir modes
82
+ */
83
+ const linkSourceToTarget = (input) => {
84
+ const { sourcePath, targetPath } = input;
85
+ // clear existing and log
86
+ const relativeTargetPath = (0, node_path_1.relative)(process.cwd(), targetPath);
87
+ const action = clearPath({ targetPath });
88
+ console.log(action === 'updated'
89
+ ? ` ↻ ${relativeTargetPath} (updated)`
90
+ : ` + ${relativeTargetPath}`);
91
+ // create parent directory if needed
92
+ const targetParent = (0, node_path_1.resolve)(targetPath, '..');
93
+ (0, node_fs_1.mkdirSync)(targetParent, { recursive: true });
94
+ // create relative symlink
95
+ const relativeSource = (0, node_path_1.relative)(targetParent, sourcePath);
96
+ (0, node_fs_1.symlinkSync)(relativeSource, targetPath, 'dir');
97
+ setDirectoryReadonlyExecutable({ dirPath: sourcePath });
98
+ return countFilesInDirectory({ dirPath: sourcePath });
99
+ };
51
100
  /**
52
101
  * .what = creates symlinks for resource directories to a target directory
53
102
  * .why = enables role resources (briefs, skills, etc.) to be linked from node_modules or other sources
@@ -57,88 +106,34 @@ const setDirectoryReadonlyExecutable = (dirPath) => {
57
106
  * - returns count of leaf files
58
107
  */
59
108
  const symlinkResourceDirectories = (options) => {
60
- const { sourceDirs, targetDir, resourceName } = options;
61
- // handle single-dir mode: symlink source dir directly as target dir
109
+ const { sourceDirs, targetDir } = options;
110
+ // single-dir mode: symlink source dir directly as target dir
62
111
  if (!Array.isArray(sourceDirs)) {
63
112
  const sourcePath = (0, node_path_1.resolve)(process.cwd(), sourceDirs.uri);
64
113
  if (!(0, node_fs_1.existsSync)(sourcePath))
65
114
  return 0;
66
- // remove existing target if present (symlink or directory)
67
- const relativeTargetPath = (0, node_path_1.relative)(process.cwd(), targetDir);
68
- if ((0, node_fs_1.existsSync)(targetDir)) {
69
- try {
70
- (0, node_fs_1.unlinkSync)(targetDir);
71
- console.log(` ↻ ${relativeTargetPath} (updated)`);
72
- }
73
- catch {
74
- (0, node_fs_1.rmSync)(targetDir, { recursive: true, force: true });
75
- console.log(` ↻ ${relativeTargetPath} (updated)`);
76
- }
77
- }
78
- else {
79
- console.log(` + ${relativeTargetPath}`);
80
- }
81
- // create parent directory if needed
82
- const targetParent = (0, node_path_1.resolve)(targetDir, '..');
83
- (0, node_fs_1.mkdirSync)(targetParent, { recursive: true });
84
- // create relative symlink: targetDir -> sourcePath
85
- const relativeSource = (0, node_path_1.relative)(targetParent, sourcePath);
86
- (0, node_fs_1.symlinkSync)(relativeSource, targetDir, 'dir');
87
- setDirectoryReadonlyExecutable(sourcePath);
88
- return countFilesInDirectory(sourcePath);
115
+ return linkSourceToTarget({ sourcePath, targetPath: targetDir });
89
116
  }
90
- // handle array-dir mode: symlink each dir within target dir
91
- // calculate expected symlink names based on source directories
92
- const expectedNames = new Set(sourceDirs.map((dir) => (0, node_path_1.basename)(dir.uri)));
117
+ // array-dir mode: symlink each source dir within target dir
93
118
  // remove deprecated symlinks (ones that exist but are no longer in the config)
119
+ const expectedNames = new Set(sourceDirs.map((dir) => (0, node_path_1.basename)(dir.uri)));
94
120
  if ((0, node_fs_1.existsSync)(targetDir)) {
95
- const existingEntries = (0, node_fs_1.readdirSync)(targetDir);
96
- for (const entry of existingEntries) {
97
- if (!expectedNames.has(entry)) {
98
- const entryPath = (0, node_path_1.resolve)(targetDir, entry);
99
- const relativeEntryPath = (0, node_path_1.relative)(process.cwd(), entryPath);
100
- try {
101
- (0, node_fs_1.unlinkSync)(entryPath);
102
- }
103
- catch {
104
- (0, node_fs_1.rmSync)(entryPath, { recursive: true, force: true });
105
- }
106
- console.log(` - ${relativeEntryPath} (removed, no longer in role)`);
107
- }
121
+ for (const entry of (0, node_fs_1.readdirSync)(targetDir)) {
122
+ if (expectedNames.has(entry))
123
+ continue;
124
+ const entryPath = (0, node_path_1.resolve)(targetDir, entry);
125
+ clearPath({ targetPath: entryPath });
126
+ console.log(` - ${(0, node_path_1.relative)(process.cwd(), entryPath)} (removed, no longer in role)`);
108
127
  }
109
128
  }
110
- if (sourceDirs.length === 0)
111
- return 0;
129
+ // create symlinks for each source dir
112
130
  let totalFileCount = 0;
113
131
  for (const sourceDir of sourceDirs) {
114
132
  const sourcePath = (0, node_path_1.resolve)(process.cwd(), sourceDir.uri);
115
133
  if (!(0, node_fs_1.existsSync)(sourcePath))
116
134
  continue;
117
- // create target directory parent if needed
118
- (0, node_fs_1.mkdirSync)(targetDir, { recursive: true });
119
- // create a unique target path for this source directory
120
135
  const targetPath = (0, node_path_1.resolve)(targetDir, (0, node_path_1.basename)(sourcePath));
121
- // remove existing symlink/file if it exists
122
- const relativeTargetPath = (0, node_path_1.relative)(process.cwd(), targetPath);
123
- if ((0, node_fs_1.existsSync)(targetPath)) {
124
- try {
125
- (0, node_fs_1.unlinkSync)(targetPath);
126
- console.log(` ↻ ${relativeTargetPath} (updated)`);
127
- }
128
- catch {
129
- (0, node_fs_1.rmSync)(targetPath, { recursive: true, force: true });
130
- console.log(` ↻ ${relativeTargetPath} (updated)`);
131
- }
132
- }
133
- else {
134
- console.log(` + ${relativeTargetPath}`);
135
- }
136
- // create relative symlink from target directory to source directory
137
- const relativeSource = (0, node_path_1.relative)(targetDir, sourcePath);
138
- (0, node_fs_1.symlinkSync)(relativeSource, targetPath, 'dir');
139
- setDirectoryReadonlyExecutable(sourcePath);
140
- const fileCount = countFilesInDirectory(sourcePath);
141
- totalFileCount += fileCount;
136
+ totalFileCount += linkSourceToTarget({ sourcePath, targetPath });
142
137
  }
143
138
  return totalFileCount;
144
139
  };
@@ -1 +1 @@
1
- {"version":3,"file":"symlinkResourceDirectories.js","sourceRoot":"","sources":["../../../../src/domain.operations/invoke/link/symlinkResourceDirectories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symlinkResourceDirectories.js","sourceRoot":"","sources":["../../../../src/domain.operations/invoke/link/symlinkResourceDirectories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * .what = upsert a file or directory (update or insert)
3
+ * .why = explicit overwrite - reports [updated] if exists, [created] if not
4
+ */
5
+ export declare const upsertFile: (input: {
6
+ cwd: string;
7
+ path: string;
8
+ content?: string;
9
+ }) => {
10
+ effect: 'UPDATED' | 'CREATED';
11
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.upsertFile = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ /**
7
+ * .what = upsert a file or directory (update or insert)
8
+ * .why = explicit overwrite - reports [updated] if exists, [created] if not
9
+ */
10
+ const upsertFile = (input) => {
11
+ const existed = (0, node_fs_1.existsSync)(input.path);
12
+ // create file or directory
13
+ if (input.content !== undefined)
14
+ (0, node_fs_1.writeFileSync)(input.path, input.content, 'utf8');
15
+ else
16
+ (0, node_fs_1.mkdirSync)(input.path, { recursive: true });
17
+ if (existed) {
18
+ console.log(` ↻ [updated] ${(0, node_path_1.relative)(input.cwd, input.path)}`);
19
+ return { effect: 'UPDATED' };
20
+ }
21
+ console.log(` + [created] ${(0, node_path_1.relative)(input.cwd, input.path)}`);
22
+ return { effect: 'CREATED' };
23
+ };
24
+ exports.upsertFile = upsertFile;
25
+ //# sourceMappingURL=upsertFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsertFile.js","sourceRoot":"","sources":["../../src/infra/upsertFile.ts"],"names":[],"mappings":";;;AAAA,qCAA+D;AAC/D,yCAAqC;AAErC;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,KAI1B,EAAqC,EAAE;IACtC,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,2BAA2B;IAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAC7B,IAAA,uBAAa,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;QAC9C,IAAA,mBAAS,EAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAA,oBAAQ,EAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAA,oBAAQ,EAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "rhachet",
3
3
  "author": "ehmpathy",
4
4
  "description": "A framework for reliable, thorough thought. Weave threads of thought via stitches.",
5
- "version": "1.19.13",
5
+ "version": "1.19.15",
6
6
  "repository": "ehmpathy/rhachet",
7
7
  "homepage": "https://github.com/ehmpathy/rhachet",
8
8
  "keywords": [