opencode-rules-md 0.6.5 → 0.6.6
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.
- package/dist/cli.mjs +163 -83
- package/dist/src/cli/config.d.ts +16 -4
- package/dist/src/cli/config.d.ts.map +1 -1
- package/dist/src/cli/config.js +92 -46
- package/dist/src/cli/config.js.map +1 -1
- package/dist/src/cli/install.d.ts +18 -6
- package/dist/src/cli/install.d.ts.map +1 -1
- package/dist/src/cli/install.js +58 -22
- package/dist/src/cli/install.js.map +1 -1
- package/dist/src/cli/main.d.ts +1 -1
- package/dist/src/cli/main.d.ts.map +1 -1
- package/dist/src/cli/main.js +33 -19
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/status.d.ts +23 -8
- package/dist/src/cli/status.d.ts.map +1 -1
- package/dist/src/cli/status.js +36 -27
- package/dist/src/cli/status.js.map +1 -1
- package/package.json +5 -5
- package/src/cli/config.ts +106 -54
- package/src/cli/install.ts +104 -27
- package/src/cli/main.ts +33 -22
- package/src/cli/status.ts +50 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* install command: idempotently append opencode-rules-md to the global
|
|
2
|
+
* install command: idempotently append opencode-rules-md to the global configs.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Registers the plugin in BOTH:
|
|
5
|
+
* - Server config: ~/.config/opencode/opencode.json
|
|
6
|
+
* - TUI config: ~/.config/opencode/tui.json
|
|
7
|
+
*
|
|
8
|
+
* Pipeline (per config):
|
|
9
|
+
* loadGlobalConfig → abort if parseError (throw) → normalizePlugin
|
|
6
10
|
* → check no-op → (dry-run? print & return "planned")
|
|
7
11
|
* → rotateBackups → writeAtomically → print & return "wrote"
|
|
12
|
+
*
|
|
13
|
+
* Errors are surfaced as exceptions instead of silent status returns so
|
|
14
|
+
* the CLI dispatcher can print them.
|
|
8
15
|
*/
|
|
9
16
|
import type { CliFs } from './real-fs.js';
|
|
10
|
-
export interface
|
|
11
|
-
status: 'wrote' | 'planned' | 'noop'
|
|
17
|
+
export interface ConfigUpdateResult {
|
|
18
|
+
status: 'wrote' | 'planned' | 'noop';
|
|
12
19
|
path: string;
|
|
13
20
|
specifier: string;
|
|
14
21
|
backup?: string;
|
|
15
|
-
|
|
22
|
+
}
|
|
23
|
+
export interface InstallResult {
|
|
24
|
+
status: 'wrote' | 'planned' | 'noop';
|
|
25
|
+
specifier: string;
|
|
26
|
+
server: ConfigUpdateResult;
|
|
27
|
+
tui: ConfigUpdateResult;
|
|
16
28
|
}
|
|
17
29
|
export declare function runInstall(opts: {
|
|
18
30
|
version?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAO1C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAMD,wBAAgB,UAAU,CACxB,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5C,EAAE,GAAE,KAAc,GACjB,aAAa,CAkBf"}
|
package/dist/src/cli/install.js
CHANGED
|
@@ -1,34 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* install command: idempotently append opencode-rules-md to the global
|
|
2
|
+
* install command: idempotently append opencode-rules-md to the global configs.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Registers the plugin in BOTH:
|
|
5
|
+
* - Server config: ~/.config/opencode/opencode.json
|
|
6
|
+
* - TUI config: ~/.config/opencode/tui.json
|
|
7
|
+
*
|
|
8
|
+
* Pipeline (per config):
|
|
9
|
+
* loadGlobalConfig → abort if parseError (throw) → normalizePlugin
|
|
6
10
|
* → check no-op → (dry-run? print & return "planned")
|
|
7
11
|
* → rotateBackups → writeAtomically → print & return "wrote"
|
|
12
|
+
*
|
|
13
|
+
* Errors are surfaced as exceptions instead of silent status returns so
|
|
14
|
+
* the CLI dispatcher can print them.
|
|
8
15
|
*/
|
|
9
|
-
import { loadGlobalConfig, normalizePlugin, removePlugin, addPlugin, rotateBackups, writeAtomically } from './config.js';
|
|
16
|
+
import { loadGlobalConfig, normalizePlugin, removePlugin, addPlugin, rotateBackups, writeAtomically, TUI_CONFIG_FILENAME, } from './config.js';
|
|
10
17
|
import { realFs } from './real-fs.js';
|
|
11
18
|
// ---------------------------------------------------------------------------
|
|
12
19
|
// Run install
|
|
13
20
|
// ---------------------------------------------------------------------------
|
|
14
21
|
export function runInstall(opts, fs = realFs) {
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
22
|
+
const specifier = buildSpecifier(opts.version);
|
|
23
|
+
const server = updateConfig(specifier, opts.dryRun ?? false, fs);
|
|
24
|
+
const tui = updateConfig(specifier, opts.dryRun ?? false, fs, {
|
|
25
|
+
filename: TUI_CONFIG_FILENAME,
|
|
26
|
+
});
|
|
27
|
+
const aggregate = server.status === 'wrote' || tui.status === 'wrote'
|
|
28
|
+
? 'wrote'
|
|
29
|
+
: server.status === 'planned' || tui.status === 'planned'
|
|
30
|
+
? 'planned'
|
|
31
|
+
: 'noop';
|
|
32
|
+
printSummary(aggregate, specifier, server, tui);
|
|
33
|
+
return { status: aggregate, specifier, server, tui };
|
|
34
|
+
}
|
|
35
|
+
function updateConfig(specifier, dryRun, fs, opts = {}) {
|
|
36
|
+
const loadResult = loadGlobalConfig(fs, opts.filename ? { filename: opts.filename } : {});
|
|
37
|
+
// Throw on parse error — better to fail fast than to silently corrupt config
|
|
18
38
|
if (loadResult.parseError) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
path:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
39
|
+
const filename = opts.filename ?? 'opencode.json';
|
|
40
|
+
const err = new Error(`opencode-rules-md: ${filename} is malformed — aborting to avoid data loss.\n` +
|
|
41
|
+
` path: ${loadResult.path}\n` +
|
|
42
|
+
` error: ${loadResult.parseError.message}`);
|
|
43
|
+
err.configPath = loadResult.path;
|
|
44
|
+
throw err;
|
|
25
45
|
}
|
|
26
46
|
const configPath = loadResult.path;
|
|
27
47
|
const config = loadResult.config;
|
|
28
48
|
// Normalize plugin array (dedupe by prefix)
|
|
29
49
|
config['plugin'] = normalizePlugin(config);
|
|
30
|
-
// Build the specifier
|
|
31
|
-
const specifier = buildSpecifier(opts.version);
|
|
32
50
|
// Check if already installed with the same specifier — no-op
|
|
33
51
|
const existing = config['plugin'] ?? [];
|
|
34
52
|
if (existing.includes(specifier)) {
|
|
@@ -39,20 +57,19 @@ export function runInstall(opts, fs = realFs) {
|
|
|
39
57
|
// Add the new (or re-added) specifier at the end
|
|
40
58
|
addPlugin(config, specifier);
|
|
41
59
|
// Dry-run: serialize and print planned content, make no changes
|
|
42
|
-
if (
|
|
60
|
+
if (dryRun) {
|
|
43
61
|
const planned = JSON.stringify(config, null, 2);
|
|
44
|
-
console.log(
|
|
62
|
+
console.log(`Planned ${configPath}:\n${planned}`);
|
|
45
63
|
return { status: 'planned', path: configPath, specifier };
|
|
46
64
|
}
|
|
47
65
|
// Write: rotate backups first, then atomic write
|
|
48
66
|
const backup = rotateBackups(fs, configPath, 'opencode-rules-md');
|
|
49
67
|
const serialized = JSON.stringify(config, null, 2);
|
|
50
68
|
writeAtomically(fs, configPath, serialized);
|
|
51
|
-
|
|
52
|
-
if (backup)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return { status: 'wrote', path: configPath, specifier, backup };
|
|
69
|
+
const result = { status: 'wrote', path: configPath, specifier };
|
|
70
|
+
if (backup)
|
|
71
|
+
result.backup = backup;
|
|
72
|
+
return result;
|
|
56
73
|
}
|
|
57
74
|
// ---------------------------------------------------------------------------
|
|
58
75
|
// Internal helpers
|
|
@@ -60,4 +77,23 @@ export function runInstall(opts, fs = realFs) {
|
|
|
60
77
|
function buildSpecifier(version) {
|
|
61
78
|
return version ? `opencode-rules-md@${version}` : 'opencode-rules-md';
|
|
62
79
|
}
|
|
80
|
+
function printSummary(status, specifier, server, tui) {
|
|
81
|
+
if (status === 'noop') {
|
|
82
|
+
console.log(`Already installed (${specifier})`);
|
|
83
|
+
console.log(` server config: ${server.path}`);
|
|
84
|
+
console.log(` tui config: ${tui.path}`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (status === 'planned') {
|
|
88
|
+
console.log('Dry run complete — no files written.');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
console.log(`Installed ${specifier}`);
|
|
92
|
+
console.log(` server config: ${server.path}`);
|
|
93
|
+
if (server.backup)
|
|
94
|
+
console.log(` backup: ${server.backup}`);
|
|
95
|
+
console.log(` tui config: ${tui.path}`);
|
|
96
|
+
if (tui.backup)
|
|
97
|
+
console.log(` backup: ${tui.backup}`);
|
|
98
|
+
}
|
|
63
99
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/main.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* CLI entrypoint for opencode-rules-md installer.
|
|
4
4
|
*
|
|
5
5
|
* Supports:
|
|
6
|
-
* install — add opencode-rules-md to the global opencode
|
|
6
|
+
* install — add opencode-rules-md to the global opencode + tui configs
|
|
7
7
|
* status — report whether opencode-rules-md is installed
|
|
8
8
|
*
|
|
9
9
|
* Flags:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAyE1C,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjC,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,KAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoDnF"}
|
package/dist/src/cli/main.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* CLI entrypoint for opencode-rules-md installer.
|
|
4
4
|
*
|
|
5
5
|
* Supports:
|
|
6
|
-
* install — add opencode-rules-md to the global opencode
|
|
6
|
+
* install — add opencode-rules-md to the global opencode + tui configs
|
|
7
7
|
* status — report whether opencode-rules-md is installed
|
|
8
8
|
*
|
|
9
9
|
* Flags:
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* -h, --help — show this help text
|
|
15
15
|
*/
|
|
16
16
|
import { parseArgs } from 'node:util';
|
|
17
|
+
import { pathToFileURL } from 'node:url';
|
|
18
|
+
import { realpathSync } from 'node:fs';
|
|
17
19
|
import { runInstall } from './install.js';
|
|
18
20
|
import { runStatus } from './status.js';
|
|
19
21
|
import { realFs } from './real-fs.js';
|
|
@@ -25,7 +27,7 @@ const HELP_TEXT = `opencode-rules-md CLI
|
|
|
25
27
|
Usage: opencode-rules-md <command> [options]
|
|
26
28
|
|
|
27
29
|
Commands:
|
|
28
|
-
install Add opencode-rules-md to the global opencode
|
|
30
|
+
install Add opencode-rules-md to the global opencode + tui configs
|
|
29
31
|
status Report whether opencode-rules-md is installed
|
|
30
32
|
|
|
31
33
|
Options:
|
|
@@ -35,8 +37,7 @@ Options:
|
|
|
35
37
|
--yes Skip confirmation prompts (future use)
|
|
36
38
|
-h, --help Show this help text
|
|
37
39
|
`.trim();
|
|
38
|
-
const USAGE_ERROR_TEXT = `Error: unknown command. Run 'opencode-rules-md --help' for usage
|
|
39
|
-
`.trim();
|
|
40
|
+
const USAGE_ERROR_TEXT = `Error: unknown command. Run 'opencode-rules-md --help' for usage.`.trim();
|
|
40
41
|
function parseCliArgs(argv) {
|
|
41
42
|
const { positionals, values } = parseArgs({
|
|
42
43
|
args: argv,
|
|
@@ -61,9 +62,6 @@ function parseCliArgs(argv) {
|
|
|
61
62
|
...(values.yes && { yes: true }),
|
|
62
63
|
...((values.help || values.h) && { help: true }),
|
|
63
64
|
};
|
|
64
|
-
// Detect unknown flags (tokens that look like flags but aren't recognized)
|
|
65
|
-
// parseArgs already filters known tokens, so we check if any positional
|
|
66
|
-
// looks like an unknown option
|
|
67
65
|
const unknownFlags = [];
|
|
68
66
|
return { command, options, unknownFlags };
|
|
69
67
|
}
|
|
@@ -93,23 +91,18 @@ export async function runMain(argv, fs = realFs) {
|
|
|
93
91
|
installOpts.version = options.version;
|
|
94
92
|
if (options.dryRun)
|
|
95
93
|
installOpts.dryRun = true;
|
|
96
|
-
|
|
97
|
-
// Map install status to exit code
|
|
98
|
-
if (installResult.status === 'error') {
|
|
99
|
-
return 1;
|
|
100
|
-
}
|
|
94
|
+
runInstall(installOpts, fs);
|
|
101
95
|
return 0;
|
|
102
96
|
}
|
|
103
97
|
case 'status': {
|
|
104
98
|
const statusResult = runStatus(fs);
|
|
105
|
-
// Print status to stdout
|
|
106
99
|
if (statusResult.installed) {
|
|
107
|
-
|
|
100
|
+
const spec = statusResult.serverSpecifier ?? statusResult.tuiSpecifier;
|
|
101
|
+
console.log(`opencode-rules-md is installed (${spec})`);
|
|
108
102
|
}
|
|
109
103
|
else {
|
|
110
104
|
console.log('opencode-rules-md is not installed');
|
|
111
105
|
}
|
|
112
|
-
// Exit code 0 regardless of install state (status is read-only)
|
|
113
106
|
return 0;
|
|
114
107
|
}
|
|
115
108
|
default: {
|
|
@@ -120,16 +113,37 @@ export async function runMain(argv, fs = realFs) {
|
|
|
120
113
|
}
|
|
121
114
|
}
|
|
122
115
|
catch (err) {
|
|
123
|
-
|
|
116
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
117
|
+
console.error(`Error: ${message}`);
|
|
124
118
|
return 1;
|
|
125
119
|
}
|
|
126
120
|
}
|
|
127
121
|
// ---------------------------------------------------------------------------
|
|
128
122
|
// Entry point
|
|
129
123
|
// ---------------------------------------------------------------------------
|
|
124
|
+
/**
|
|
125
|
+
* Determine whether the current module is being executed as the main entry.
|
|
126
|
+
* Uses realpathSync + pathToFileURL so symlinked invocations (e.g. npx)
|
|
127
|
+
* are matched correctly.
|
|
128
|
+
*/
|
|
129
|
+
function isInvokedAsMain() {
|
|
130
|
+
if (!process.argv[1])
|
|
131
|
+
return false;
|
|
132
|
+
try {
|
|
133
|
+
const realArgv = pathToFileURL(realpathSync(process.argv[1])).href;
|
|
134
|
+
return import.meta.url === realArgv;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
try {
|
|
138
|
+
return import.meta.url === pathToFileURL(process.argv[1]).href;
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
130
145
|
// Only run if executed directly (not imported as a module)
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
process.exit(exitCode);
|
|
146
|
+
if (isInvokedAsMain()) {
|
|
147
|
+
void runMain(process.argv.slice(2)).then(code => process.exit(code));
|
|
134
148
|
}
|
|
135
149
|
//# sourceMappingURL=main.js.map
|
package/dist/src/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAcjB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/status.d.ts
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* status command: read-only probe that reports install state.
|
|
3
3
|
*
|
|
4
|
-
* Reports:
|
|
5
|
-
* - installed: yes/no
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
4
|
+
* Reports install state across BOTH the server and TUI configs:
|
|
5
|
+
* - installed: yes/no (true only when present in both configs)
|
|
6
|
+
* - serverSpecifier: the registered entry in opencode.json (or undefined)
|
|
7
|
+
* - tuiSpecifier: the registered entry in tui.json (or undefined)
|
|
8
|
+
* - serverPath: path to the server config
|
|
9
|
+
* - tuiPath: path to the TUI config
|
|
10
|
+
* - version: bundled CLI version from package.json
|
|
9
11
|
*/
|
|
10
12
|
import type { CliFs } from './real-fs.js';
|
|
11
13
|
export interface StatusResult {
|
|
14
|
+
/** True only when the plugin is registered in both server and TUI configs. */
|
|
12
15
|
installed: boolean;
|
|
13
|
-
path
|
|
14
|
-
|
|
16
|
+
/** Server config path. */
|
|
17
|
+
serverPath: string;
|
|
18
|
+
/** TUI config path. */
|
|
19
|
+
tuiPath: string;
|
|
20
|
+
/** Registered specifier in the server config, if any. */
|
|
21
|
+
serverSpecifier?: string;
|
|
22
|
+
/** Registered specifier in the TUI config, if any. */
|
|
23
|
+
tuiSpecifier?: string;
|
|
24
|
+
/** Whether the server config existed on disk before the probe. */
|
|
25
|
+
serverExisted: boolean;
|
|
26
|
+
/** Whether the TUI config existed on disk before the probe. */
|
|
27
|
+
tuiExisted: boolean;
|
|
28
|
+
/** Bundled CLI version from package.json. */
|
|
15
29
|
version: string;
|
|
30
|
+
/** First parse error encountered, if any (server takes priority). */
|
|
16
31
|
parseError?: Error;
|
|
17
32
|
}
|
|
18
|
-
export declare function runStatus(
|
|
33
|
+
export declare function runStatus(cliFs?: CliFs): StatusResult;
|
|
19
34
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/status.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAS1C,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,aAAa,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAMD,wBAAgB,SAAS,CAAC,KAAK,GAAE,KAAc,GAAG,YAAY,CA0B7D"}
|
package/dist/src/cli/status.js
CHANGED
|
@@ -1,48 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* status command: read-only probe that reports install state.
|
|
3
3
|
*
|
|
4
|
-
* Reports:
|
|
5
|
-
* - installed: yes/no
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
4
|
+
* Reports install state across BOTH the server and TUI configs:
|
|
5
|
+
* - installed: yes/no (true only when present in both configs)
|
|
6
|
+
* - serverSpecifier: the registered entry in opencode.json (or undefined)
|
|
7
|
+
* - tuiSpecifier: the registered entry in tui.json (or undefined)
|
|
8
|
+
* - serverPath: path to the server config
|
|
9
|
+
* - tuiPath: path to the TUI config
|
|
10
|
+
* - version: bundled CLI version from package.json
|
|
9
11
|
*/
|
|
10
|
-
import { loadGlobalConfig } from './config.js';
|
|
12
|
+
import { loadGlobalConfig, TUI_CONFIG_FILENAME } from './config.js';
|
|
11
13
|
import { realFs } from './real-fs.js';
|
|
12
14
|
import * as fs from 'node:fs';
|
|
13
15
|
import * as path from 'node:path';
|
|
14
16
|
// ---------------------------------------------------------------------------
|
|
15
17
|
// Run status
|
|
16
18
|
// ---------------------------------------------------------------------------
|
|
17
|
-
export function runStatus(
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
installed: false,
|
|
24
|
-
path: configPath,
|
|
25
|
-
version: getVersion(),
|
|
26
|
-
parseError: loadResult.parseError,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
const config = loadResult.config;
|
|
30
|
-
const pluginList = Array.isArray(config['plugin']) ? config['plugin'] : [];
|
|
31
|
-
// Find the opencode-rules-md entry (exact match for idempotency)
|
|
32
|
-
const specifier = pluginList.find(p => p.startsWith('opencode-rules-md'));
|
|
19
|
+
export function runStatus(cliFs = realFs) {
|
|
20
|
+
const serverLoad = loadGlobalConfig(cliFs);
|
|
21
|
+
const tuiLoad = loadGlobalConfig(cliFs, { filename: TUI_CONFIG_FILENAME });
|
|
22
|
+
const serverSpecifier = findSpecifier(serverLoad);
|
|
23
|
+
const tuiSpecifier = findSpecifier(tuiLoad);
|
|
24
|
+
const installed = serverSpecifier !== undefined && tuiSpecifier !== undefined;
|
|
33
25
|
const result = {
|
|
34
|
-
installed
|
|
35
|
-
|
|
26
|
+
installed,
|
|
27
|
+
serverPath: serverLoad.path,
|
|
28
|
+
tuiPath: tuiLoad.path,
|
|
29
|
+
serverExisted: serverLoad.existed,
|
|
30
|
+
tuiExisted: tuiLoad.existed,
|
|
36
31
|
version: getVersion(),
|
|
37
32
|
};
|
|
38
|
-
if (
|
|
39
|
-
result.
|
|
40
|
-
|
|
33
|
+
if (serverSpecifier)
|
|
34
|
+
result.serverSpecifier = serverSpecifier;
|
|
35
|
+
if (tuiSpecifier)
|
|
36
|
+
result.tuiSpecifier = tuiSpecifier;
|
|
37
|
+
// Surface the first parse error so callers can warn the user
|
|
38
|
+
const parseError = serverLoad.parseError ?? tuiLoad.parseError;
|
|
39
|
+
if (parseError)
|
|
40
|
+
result.parseError = parseError;
|
|
41
41
|
return result;
|
|
42
42
|
}
|
|
43
43
|
// ---------------------------------------------------------------------------
|
|
44
44
|
// Internal helpers
|
|
45
45
|
// ---------------------------------------------------------------------------
|
|
46
|
+
function findSpecifier(load) {
|
|
47
|
+
if (load.parseError)
|
|
48
|
+
return undefined;
|
|
49
|
+
const config = load.config;
|
|
50
|
+
const pluginList = Array.isArray(config['plugin'])
|
|
51
|
+
? config['plugin']
|
|
52
|
+
: [];
|
|
53
|
+
return pluginList.find(p => p.startsWith('opencode-rules-md'));
|
|
54
|
+
}
|
|
46
55
|
function getVersion() {
|
|
47
56
|
try {
|
|
48
57
|
// Read package.json relative to the project root
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/status.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AA2BlC,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,UAAU,SAAS,CAAC,QAAe,MAAM;IAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAE3E,MAAM,eAAe,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,eAAe,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,CAAC;IAE9E,MAAM,MAAM,GAAiB;QAC3B,SAAS;QACT,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,aAAa,EAAE,UAAU,CAAC,OAAO;QACjC,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,OAAO,EAAE,UAAU,EAAE;KACtB,CAAC;IAEF,IAAI,eAAe;QAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IAC9D,IAAI,YAAY;QAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IAErD,6DAA6D;IAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAC/D,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IAE/C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,IAAyC;IAC9D,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,UAAU,GAAa,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAE,MAAM,CAAC,QAAQ,CAAc;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,iDAAiD;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyB,CAAC;QACxD,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-rules-md",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.6",
|
|
4
4
|
"description": "OpenCode plugin that discovers and injects markdown rules into system prompts",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -63,7 +63,10 @@
|
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@opencode-ai/plugin": "^1.3.9",
|
|
66
|
-
"@opencode-ai/sdk": "^1.3.9"
|
|
66
|
+
"@opencode-ai/sdk": "^1.3.9",
|
|
67
|
+
"@opentui/core": "^0.4.3",
|
|
68
|
+
"@opentui/solid": "^0.4.3",
|
|
69
|
+
"solid-js": "1.9.14"
|
|
67
70
|
},
|
|
68
71
|
"devDependencies": {
|
|
69
72
|
"@opencode-ai/plugin": "^1.3.9",
|
|
@@ -81,10 +84,7 @@
|
|
|
81
84
|
"vitest": "^2.1.8"
|
|
82
85
|
},
|
|
83
86
|
"dependencies": {
|
|
84
|
-
"@opentui/core": "^0.4.3",
|
|
85
|
-
"@opentui/solid": "^0.4.3",
|
|
86
87
|
"minimatch": "^9.0.5",
|
|
87
|
-
"solid-js": "1.9.14",
|
|
88
88
|
"yaml": "^2.8.2"
|
|
89
89
|
},
|
|
90
90
|
"scripts": {
|