@ksm0709/context 0.0.9 → 0.0.11
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/index.js +176 -41
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
3
|
|
|
4
|
-
// src/cli/
|
|
4
|
+
// src/cli/commands/update.ts
|
|
5
5
|
import { resolve } from "path";
|
|
6
|
+
import { existsSync as existsSync2 } from "fs";
|
|
6
7
|
|
|
7
8
|
// src/lib/scaffold.ts
|
|
8
9
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
@@ -31,7 +32,7 @@ var LIMITS = {
|
|
|
31
32
|
// package.json
|
|
32
33
|
var package_default = {
|
|
33
34
|
name: "@ksm0709/context",
|
|
34
|
-
version: "0.0.
|
|
35
|
+
version: "0.0.11",
|
|
35
36
|
author: {
|
|
36
37
|
name: "TaehoKang",
|
|
37
38
|
email: "ksm07091@gmail.com"
|
|
@@ -127,23 +128,48 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
127
128
|
|
|
128
129
|
- AGENTS.md\uC758 \uC9C0\uC2DC\uC0AC\uD56D\uC774 \uD56D\uC0C1 \uCD5C\uC6B0\uC120
|
|
129
130
|
- \uC9C0\uC2DD \uB178\uD2B8\uC758 \uACB0\uC815\uC0AC\uD56D > \uC77C\uBC18\uC801 \uAD00\uD589
|
|
130
|
-
- \uC9C0\uC2DD \uB178\uD2B8\uC5D0 \uC5C6\uB294 \uC0C8\uB85C\uC6B4 \uACB0\uC815\uC740 \uC791\uC5C5 \uC644\uB8CC \uC2DC \uAE30\uB85D\uD558\uC138\uC694
|
|
131
|
+
- \uC9C0\uC2DD \uB178\uD2B8\uC5D0 \uC5C6\uB294 \uC0C8\uB85C\uC6B4 \uACB0\uC815\uC740 \uC791\uC5C5 \uC644\uB8CC \uC2DC \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC5D0 \uC704\uC784\uD558\uC5EC \uAE30\uB85D\uD558\uC138\uC694
|
|
131
132
|
`;
|
|
132
|
-
var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC
|
|
133
|
-
|
|
134
|
-
\uC791\uC5C5\
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
133
|
+
var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC
|
|
134
|
+
|
|
135
|
+
\uC791\uC5C5\uC774 \uC644\uB8CC\uB418\uBA74, \uC544\uB798 \uB450 \uAC00\uC9C0\uB97C **\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC5D0 \uC704\uC784**\uD558\uC138\uC694.
|
|
136
|
+
\uBA54\uC778 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC9C1\uC811 \uC218\uD589\uD558\uC9C0 \uB9C8\uC138\uC694.
|
|
137
|
+
|
|
138
|
+
### 1. \uD004\uB9AC\uD2F0 \uCCB4\uD06C (\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uC704\uC784)
|
|
139
|
+
|
|
140
|
+
\uBCC0\uACBD\uD55C \uCF54\uB4DC\uC758 \uD488\uC9C8\uC744 \uAC80\uC99D\uD558\uB294 \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uB97C \uC2E4\uD589\uD558\uC138\uC694.
|
|
141
|
+
|
|
142
|
+
\`\`\`
|
|
143
|
+
task(
|
|
144
|
+
category="quick",
|
|
145
|
+
load_skills=[],
|
|
146
|
+
description="Quality check for changed files",
|
|
147
|
+
prompt="""
|
|
148
|
+
TASK: \uBCC0\uACBD\uB41C \uD30C\uC77C\uB4E4\uC5D0 \uB300\uD574 \uD004\uB9AC\uD2F0 \uCCB4\uD06C\uB97C \uC218\uD589\uD558\uC138\uC694.
|
|
149
|
+
EXPECTED OUTCOME: \uBAA8\uB4E0 \uCCB4\uD06C \uD1B5\uACFC \uB610\uB294 \uC2E4\uD328 \uD56D\uBAA9 \uBAA9\uB85D
|
|
150
|
+
REQUIRED TOOLS: Bash (lint, format, test \uC2E4\uD589)
|
|
151
|
+
MUST DO:
|
|
152
|
+
- \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 lint \uC2E4\uD589
|
|
153
|
+
- \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 formatter \uC2E4\uD589 (lint\uC640 \uBCC4\uAC1C)
|
|
154
|
+
- \uAE30\uC874 \uD14C\uC2A4\uD2B8 \uD1B5\uACFC \uD655\uC778
|
|
155
|
+
- \uC0C8\uB85C \uC791\uC131/\uBCC0\uACBD\uD55C \uCF54\uB4DC\uC758 \uD14C\uC2A4\uD2B8 \uCEE4\uBC84\uB9AC\uC9C0 80% \uC774\uC0C1 \uD655\uC778
|
|
156
|
+
- \uBCC0\uACBD \uBC94\uC704 \uD655\uC778: \uC694\uCCAD\uACFC \uBB34\uAD00\uD55C \uD30C\uC77C\uC744 \uAC74\uB4DC\uB9AC\uC9C0 \uC54A\uC558\uB294\uC9C0 \uAC80\uC99D
|
|
157
|
+
- \uC2E4\uD328 \uD56D\uBAA9\uC774 \uC788\uC73C\uBA74 \uAD6C\uCCB4\uC801\uC778 \uC5D0\uB7EC \uBA54\uC2DC\uC9C0\uC640 \uD30C\uC77C \uC704\uCE58\uB97C \uBCF4\uACE0
|
|
158
|
+
MUST NOT DO:
|
|
159
|
+
- \uCF54\uB4DC\uB97C \uC9C1\uC811 \uC218\uC815\uD558\uC9C0 \uB9C8\uC138\uC694 (\uBCF4\uACE0\uB9CC)
|
|
160
|
+
- \uD14C\uC2A4\uD2B8\uB97C \uC0AD\uC81C\uD558\uAC70\uB098 \uC2A4\uD0B5\uD558\uC9C0 \uB9C8\uC138\uC694
|
|
161
|
+
CONTEXT: [\uBCC0\uACBD\uD55C \uD30C\uC77C \uBAA9\uB85D\uACFC \uBCC0\uACBD \uB0B4\uC6A9 \uC694\uC57D\uC744 \uC5EC\uAE30\uC5D0 \uD3EC\uD568]
|
|
162
|
+
"""
|
|
163
|
+
)
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
\uD004\uB9AC\uD2F0 \uCCB4\uD06C \uC2E4\uD328 \uC2DC: \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uBCF4\uACE0\uB97C \uBC14\uD0D5\uC73C\uB85C \uC9C1\uC811 \uC218\uC815\uD55C \uB4A4, \uB2E4\uC2DC \uC704\uC784\uD558\uC138\uC694.
|
|
167
|
+
|
|
168
|
+
### 2. \uC9C0\uC2DD \uC815\uB9AC (\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uC704\uC784)
|
|
169
|
+
|
|
170
|
+
\uC791\uC5C5 \uC911 \uAE30\uB85D\uD560 \uB9CC\uD55C \uBC1C\uACAC\uC774 \uC788\uC5C8\uB2E4\uBA74, \uC9C0\uC2DD \uB178\uD2B8 \uC791\uC131\uC744 \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC5D0 \uC704\uC784\uD558\uC138\uC694.
|
|
171
|
+
|
|
172
|
+
**\uAE30\uB85D \uB300\uC0C1 \uD310\uB2E8 \uAE30\uC900:**
|
|
147
173
|
|
|
148
174
|
| \uC0C1\uD669 | \uD15C\uD50C\uB9BF | \uD30C\uC77C\uBA85 \uD328\uD134 |
|
|
149
175
|
| ------------------------------- | --------------------------------------------------- | --------------------------- |
|
|
@@ -156,17 +182,32 @@ var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC \uCCB4\uD06C\uB9AC\uC
|
|
|
156
182
|
| \uBC18\uBCF5 \uAC00\uB2A5\uD55C \uD504\uB85C\uC138\uC2A4 \uC815\uB9BD | [Runbook](.opencode/context/templates/runbook.md) | \`runbook-\uC81C\uBAA9.md\` |
|
|
157
183
|
| \uC2E4\uD5D8/\uB514\uBC84\uAE45 \uC911 \uD559\uC2B5 | [Insight](.opencode/context/templates/insight.md) | \`insight-\uC81C\uBAA9.md\` |
|
|
158
184
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
185
|
+
\uD574\uB2F9 \uC0AC\uD56D\uC774 \uC5C6\uC73C\uBA74 \uC774 \uB2E8\uACC4\uB294 \uAC74\uB108\uB6F0\uC138\uC694.
|
|
186
|
+
|
|
187
|
+
\`\`\`
|
|
188
|
+
task(
|
|
189
|
+
category="quick",
|
|
190
|
+
load_skills=[],
|
|
191
|
+
description="Write Zettelkasten knowledge note",
|
|
192
|
+
prompt="""
|
|
193
|
+
TASK: \uC544\uB798 \uB0B4\uC6A9\uC744 \uBC14\uD0D5\uC73C\uB85C Zettelkasten \uC9C0\uC2DD \uB178\uD2B8\uB97C \uC791\uC131\uD558\uC138\uC694.
|
|
194
|
+
EXPECTED OUTCOME: \uD15C\uD50C\uB9BF\uC5D0 \uB9DE\uB294 \uB178\uD2B8 \uD30C\uC77C \uC0DD\uC131, \uAD00\uB828 \uB178\uD2B8 \uB9C1\uD06C \uC5F0\uACB0
|
|
195
|
+
REQUIRED TOOLS: Read (\uD15C\uD50C\uB9BF \uC77D\uAE30), Write (\uB178\uD2B8 \uC791\uC131), Edit (\uAE30\uC874 \uB178\uD2B8 \uB9C1\uD06C \uCD94\uAC00)
|
|
196
|
+
MUST DO:
|
|
197
|
+
- \uD574\uB2F9 \uD15C\uD50C\uB9BF \uD30C\uC77C\uC744 \uC77D\uACE0 \uADF8 \uAD6C\uC870\uC5D0 \uB9DE\uCDB0 \uB178\uD2B8 \uC791\uC131
|
|
198
|
+
- \uB178\uD2B8 \uCCAB \uC904: \uBA85\uD655\uD55C \uC81C\uBAA9 (# Title)
|
|
199
|
+
- \uD575\uC2EC \uB0B4\uC6A9\uC744 \uC790\uAE30 \uC5B8\uC5B4\uB85C \uAC04\uACB0\uD558\uAC8C \uC11C\uC220 (\uBCF5\uC0AC-\uBD99\uC5EC\uB123\uAE30 \uAE08\uC9C0)
|
|
200
|
+
- \uAD00\uB828 \uB178\uD2B8\uB97C [[relative/path/file.md]] \uD615\uD0DC\uC758 wikilink\uB85C \uC5F0\uACB0
|
|
201
|
+
- knowledge \uB514\uB809\uD1A0\uB9AC (\uAE30\uBCF8: docs/)\uC5D0 \uC800\uC7A5. \uB3C4\uBA54\uC778 \uD3F4\uB354\uAC00 \uC788\uB2E4\uBA74 \uC801\uC808\uD55C \uB3C4\uBA54\uC778\uC5D0 \uC800\uC7A5
|
|
202
|
+
- \uAE30\uC874 \uB178\uD2B8\uC758 \uB0B4\uC6A9\uC774 \uBCC0\uACBD\uC0AC\uD56D\uACFC \uBD88\uC77C\uCE58\uD558\uBA74 \uC5C5\uB370\uC774\uD2B8
|
|
203
|
+
- \uB3C4\uBA54\uC778 \uD3F4\uB354\uC5D0 \uC800\uC7A5\uD588\uB2E4\uBA74 \uD574\uB2F9 INDEX.md\uC5D0 \uD56D\uBAA9 \uCD94\uAC00
|
|
204
|
+
MUST NOT DO:
|
|
205
|
+
- \uC18C\uC2A4 \uCF54\uB4DC\uB97C \uC218\uC815\uD558\uC9C0 \uB9C8\uC138\uC694 (\uB178\uD2B8\uB9CC \uC791\uC131)
|
|
206
|
+
- \uB178\uD2B8\uC5D0 \uC5EC\uB7EC \uC8FC\uC81C\uB97C \uC11E\uC9C0 \uB9C8\uC138\uC694 (\uC6D0\uC790\uC131 \uC6D0\uCE59)
|
|
207
|
+
CONTEXT: [\uAE30\uB85D\uD560 \uBC1C\uACAC \uB0B4\uC6A9, \uD574\uB2F9\uD558\uB294 \uD15C\uD50C\uB9BF \uC885\uB958, \uAD00\uB828 \uAE30\uC874 \uB178\uD2B8 \uBAA9\uB85D\uC744 \uC5EC\uAE30\uC5D0 \uD3EC\uD568]
|
|
208
|
+
"""
|
|
209
|
+
)
|
|
210
|
+
\`\`\`
|
|
170
211
|
`;
|
|
171
212
|
var DEFAULT_ADR_TEMPLATE = `# ADR-NNN: [\uC81C\uBAA9]
|
|
172
213
|
|
|
@@ -413,9 +454,54 @@ function updateScaffold(projectDir) {
|
|
|
413
454
|
function writeVersion(contextDir, version) {
|
|
414
455
|
writeFileSync(join(contextDir, ".version"), version, "utf-8");
|
|
415
456
|
}
|
|
457
|
+
function updatePrompts(projectDir) {
|
|
458
|
+
const contextDir = join(projectDir, ".opencode", "context");
|
|
459
|
+
mkdirSync(join(contextDir, "prompts"), { recursive: true });
|
|
460
|
+
const prompts = {
|
|
461
|
+
[`prompts/${DEFAULTS.turnStartFile}`]: DEFAULT_TURN_START,
|
|
462
|
+
[`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END
|
|
463
|
+
};
|
|
464
|
+
const updated = [];
|
|
465
|
+
for (const [path, content] of Object.entries(prompts)) {
|
|
466
|
+
const filePath = join(contextDir, path);
|
|
467
|
+
try {
|
|
468
|
+
const existing = readFileSync(filePath, "utf-8");
|
|
469
|
+
if (existing === content)
|
|
470
|
+
continue;
|
|
471
|
+
} catch {}
|
|
472
|
+
writeFileSync(filePath, content, "utf-8");
|
|
473
|
+
updated.push(path);
|
|
474
|
+
}
|
|
475
|
+
return updated;
|
|
476
|
+
}
|
|
416
477
|
|
|
417
478
|
// src/cli/commands/update.ts
|
|
418
|
-
|
|
479
|
+
var KNOWN_SUBCOMMANDS = ["all", "prompt", "plugin"];
|
|
480
|
+
function runUpdate(args) {
|
|
481
|
+
const [subcommand, ...rest] = args;
|
|
482
|
+
switch (subcommand) {
|
|
483
|
+
case undefined:
|
|
484
|
+
case "all":
|
|
485
|
+
runUpdateAll(resolve(rest[0] ?? process.cwd()));
|
|
486
|
+
break;
|
|
487
|
+
case "prompt":
|
|
488
|
+
runUpdatePrompt(resolve(rest[0] ?? process.cwd()));
|
|
489
|
+
break;
|
|
490
|
+
case "plugin":
|
|
491
|
+
runUpdatePlugin(rest[0] ?? "latest");
|
|
492
|
+
break;
|
|
493
|
+
default:
|
|
494
|
+
if (!KNOWN_SUBCOMMANDS.includes(subcommand)) {
|
|
495
|
+
runUpdateAll(resolve(subcommand));
|
|
496
|
+
} else {
|
|
497
|
+
process.stderr.write(`Unknown update subcommand: ${subcommand}
|
|
498
|
+
`);
|
|
499
|
+
process.exit(1);
|
|
500
|
+
}
|
|
501
|
+
break;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
function runUpdateAll(projectDir) {
|
|
419
505
|
const updated = updateScaffold(projectDir);
|
|
420
506
|
if (updated.length === 0) {
|
|
421
507
|
process.stdout.write(`All scaffold files are already up to date.
|
|
@@ -429,31 +515,81 @@ function runUpdate(projectDir) {
|
|
|
429
515
|
}
|
|
430
516
|
}
|
|
431
517
|
}
|
|
518
|
+
function runUpdatePrompt(projectDir) {
|
|
519
|
+
const updated = updatePrompts(projectDir);
|
|
520
|
+
if (updated.length === 0) {
|
|
521
|
+
process.stdout.write(`All prompt files are already up to date.
|
|
522
|
+
`);
|
|
523
|
+
} else {
|
|
524
|
+
process.stdout.write(`Updated ${updated.length} prompt file(s):
|
|
525
|
+
`);
|
|
526
|
+
for (const f of updated) {
|
|
527
|
+
process.stdout.write(` - ${f}
|
|
528
|
+
`);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
function detectPackageManager() {
|
|
533
|
+
if (existsSync2("bun.lock") || existsSync2("bun.lockb"))
|
|
534
|
+
return "bun";
|
|
535
|
+
if (existsSync2("pnpm-lock.yaml"))
|
|
536
|
+
return "pnpm";
|
|
537
|
+
if (existsSync2("yarn.lock"))
|
|
538
|
+
return "yarn";
|
|
539
|
+
if (existsSync2("package-lock.json"))
|
|
540
|
+
return "npm";
|
|
541
|
+
return "bun";
|
|
542
|
+
}
|
|
543
|
+
function runUpdatePlugin(version) {
|
|
544
|
+
const pm = detectPackageManager();
|
|
545
|
+
const pkg = `@ksm0709/context@${version}`;
|
|
546
|
+
process.stdout.write(`Updating ${pkg} using ${pm}...
|
|
547
|
+
`);
|
|
548
|
+
const result = Bun.spawnSync([pm, "add", pkg]);
|
|
549
|
+
if (result.exitCode !== 0) {
|
|
550
|
+
process.stderr.write(`Failed to update: ${result.stderr.toString()}
|
|
551
|
+
`);
|
|
552
|
+
process.exit(1);
|
|
553
|
+
}
|
|
554
|
+
process.stdout.write(`Successfully updated to ${pkg}.
|
|
555
|
+
`);
|
|
556
|
+
}
|
|
432
557
|
|
|
433
558
|
// src/cli/index.ts
|
|
434
|
-
var
|
|
435
|
-
update: "Force-update scaffold files to latest plugin version"
|
|
436
|
-
};
|
|
559
|
+
var PLUGIN_VERSION2 = package_default.version;
|
|
437
560
|
function printHelp(out) {
|
|
438
561
|
const write = out ?? ((s) => process.stdout.write(s));
|
|
439
|
-
write(`
|
|
562
|
+
write(`Context Plugin CLI v${PLUGIN_VERSION2}
|
|
563
|
+
|
|
564
|
+
`);
|
|
565
|
+
write(`Usage: context <command> [options]
|
|
440
566
|
|
|
441
567
|
`);
|
|
442
568
|
write(`Commands:
|
|
443
569
|
`);
|
|
444
|
-
|
|
445
|
-
|
|
570
|
+
write(` update [all] [path] Force-update all scaffold files
|
|
571
|
+
`);
|
|
572
|
+
write(` update prompt [path] Force-update prompt files only
|
|
573
|
+
`);
|
|
574
|
+
write(` update plugin [version] Update @ksm0709/context package
|
|
446
575
|
`);
|
|
447
|
-
}
|
|
448
576
|
write(`
|
|
449
577
|
`);
|
|
450
578
|
}
|
|
451
579
|
function runCli(argv) {
|
|
452
580
|
const [command, ...rest] = argv;
|
|
453
|
-
|
|
581
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
582
|
+
printHelp();
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
454
585
|
switch (command) {
|
|
455
586
|
case "update":
|
|
456
|
-
runUpdate(
|
|
587
|
+
runUpdate(rest);
|
|
588
|
+
break;
|
|
589
|
+
case "--version":
|
|
590
|
+
case "-v":
|
|
591
|
+
process.stdout.write(`${PLUGIN_VERSION2}
|
|
592
|
+
`);
|
|
457
593
|
break;
|
|
458
594
|
case undefined:
|
|
459
595
|
case "--help":
|
|
@@ -473,6 +609,5 @@ if (import.meta.path === Bun.main) {
|
|
|
473
609
|
}
|
|
474
610
|
export {
|
|
475
611
|
runCli,
|
|
476
|
-
printHelp
|
|
477
|
-
COMMANDS
|
|
612
|
+
printHelp
|
|
478
613
|
};
|
package/dist/index.js
CHANGED