@ksm0709/context 0.0.7 → 0.0.9
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 +478 -0
- package/dist/context.js +1579 -0
- package/dist/index.js +124 -78
- package/package.json +12 -4
- package/src/version.ts +0 -1
package/dist/index.js
CHANGED
|
@@ -1091,11 +1091,65 @@ function readPromptFile(filePath) {
|
|
|
1091
1091
|
// src/lib/scaffold.ts
|
|
1092
1092
|
import { existsSync as existsSync2, mkdirSync, readFileSync as readFileSync4, writeFileSync } from "fs";
|
|
1093
1093
|
import { join as join3 } from "path";
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1094
|
+
// package.json
|
|
1095
|
+
var package_default = {
|
|
1096
|
+
name: "@ksm0709/context",
|
|
1097
|
+
version: "0.0.9",
|
|
1098
|
+
author: {
|
|
1099
|
+
name: "TaehoKang",
|
|
1100
|
+
email: "ksm07091@gmail.com"
|
|
1101
|
+
},
|
|
1102
|
+
type: "module",
|
|
1103
|
+
main: "./dist/index.js",
|
|
1104
|
+
bin: {
|
|
1105
|
+
context: "./dist/cli/index.js"
|
|
1106
|
+
},
|
|
1107
|
+
exports: {
|
|
1108
|
+
".": {
|
|
1109
|
+
import: "./dist/index.js",
|
|
1110
|
+
types: "./dist/index.d.ts",
|
|
1111
|
+
default: "./dist/index.js"
|
|
1112
|
+
}
|
|
1113
|
+
},
|
|
1114
|
+
repository: {
|
|
1115
|
+
type: "git",
|
|
1116
|
+
url: "git@github.com:ksm0709/context.git"
|
|
1117
|
+
},
|
|
1118
|
+
publishConfig: {
|
|
1119
|
+
access: "public"
|
|
1120
|
+
},
|
|
1121
|
+
scripts: {
|
|
1122
|
+
build: "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun",
|
|
1123
|
+
test: "vitest run",
|
|
1124
|
+
lint: "eslint src --ext .ts"
|
|
1125
|
+
},
|
|
1126
|
+
files: [
|
|
1127
|
+
"dist"
|
|
1128
|
+
],
|
|
1129
|
+
peerDependencies: {
|
|
1130
|
+
"@opencode-ai/plugin": ">=1.0.0"
|
|
1131
|
+
},
|
|
1132
|
+
dependencies: {
|
|
1133
|
+
"jsonc-parser": "^3.0.0"
|
|
1134
|
+
},
|
|
1135
|
+
devDependencies: {
|
|
1136
|
+
"@opencode-ai/plugin": "^1.2.10",
|
|
1137
|
+
"@eslint/js": "^9.39.1",
|
|
1138
|
+
"@types/node": "^20.11.5",
|
|
1139
|
+
"@typescript-eslint/eslint-plugin": "8.47.0",
|
|
1140
|
+
"@typescript-eslint/parser": "8.47.0",
|
|
1141
|
+
"bun-types": "latest",
|
|
1142
|
+
eslint: "^9.39.1",
|
|
1143
|
+
"eslint-config-prettier": "10.1.8",
|
|
1144
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
1145
|
+
prettier: "^3.2.4",
|
|
1146
|
+
"typescript-eslint": "^8.47.0",
|
|
1147
|
+
vitest: "^3.2.4"
|
|
1148
|
+
}
|
|
1149
|
+
};
|
|
1097
1150
|
|
|
1098
1151
|
// src/lib/scaffold.ts
|
|
1152
|
+
var PLUGIN_VERSION = package_default.version;
|
|
1099
1153
|
var DEFAULT_CONFIG = `{
|
|
1100
1154
|
// Context Plugin Configuration
|
|
1101
1155
|
// See: https://github.com/ksm0709/context
|
|
@@ -1136,23 +1190,48 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
1136
1190
|
|
|
1137
1191
|
- AGENTS.md\uC758 \uC9C0\uC2DC\uC0AC\uD56D\uC774 \uD56D\uC0C1 \uCD5C\uC6B0\uC120
|
|
1138
1192
|
- \uC9C0\uC2DD \uB178\uD2B8\uC758 \uACB0\uC815\uC0AC\uD56D > \uC77C\uBC18\uC801 \uAD00\uD589
|
|
1139
|
-
- \uC9C0\uC2DD \uB178\uD2B8\uC5D0 \uC5C6\uB294 \uC0C8\uB85C\uC6B4 \uACB0\uC815\uC740 \uC791\uC5C5 \uC644\uB8CC \uC2DC \uAE30\uB85D\uD558\uC138\uC694
|
|
1193
|
+
- \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
|
|
1140
1194
|
`;
|
|
1141
|
-
var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC
|
|
1142
|
-
|
|
1143
|
-
\uC791\uC5C5\
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1195
|
+
var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC
|
|
1196
|
+
|
|
1197
|
+
\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.
|
|
1198
|
+
\uBA54\uC778 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC9C1\uC811 \uC218\uD589\uD558\uC9C0 \uB9C8\uC138\uC694.
|
|
1199
|
+
|
|
1200
|
+
### 1. \uD004\uB9AC\uD2F0 \uCCB4\uD06C (\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uC704\uC784)
|
|
1201
|
+
|
|
1202
|
+
\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.
|
|
1203
|
+
|
|
1204
|
+
\`\`\`
|
|
1205
|
+
task(
|
|
1206
|
+
category="quick",
|
|
1207
|
+
load_skills=[],
|
|
1208
|
+
description="Quality check for changed files",
|
|
1209
|
+
prompt="""
|
|
1210
|
+
TASK: \uBCC0\uACBD\uB41C \uD30C\uC77C\uB4E4\uC5D0 \uB300\uD574 \uD004\uB9AC\uD2F0 \uCCB4\uD06C\uB97C \uC218\uD589\uD558\uC138\uC694.
|
|
1211
|
+
EXPECTED OUTCOME: \uBAA8\uB4E0 \uCCB4\uD06C \uD1B5\uACFC \uB610\uB294 \uC2E4\uD328 \uD56D\uBAA9 \uBAA9\uB85D
|
|
1212
|
+
REQUIRED TOOLS: Bash (lint, format, test \uC2E4\uD589)
|
|
1213
|
+
MUST DO:
|
|
1214
|
+
- \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 lint \uC2E4\uD589
|
|
1215
|
+
- \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 formatter \uC2E4\uD589 (lint\uC640 \uBCC4\uAC1C)
|
|
1216
|
+
- \uAE30\uC874 \uD14C\uC2A4\uD2B8 \uD1B5\uACFC \uD655\uC778
|
|
1217
|
+
- \uC0C8\uB85C \uC791\uC131/\uBCC0\uACBD\uD55C \uCF54\uB4DC\uC758 \uD14C\uC2A4\uD2B8 \uCEE4\uBC84\uB9AC\uC9C0 80% \uC774\uC0C1 \uD655\uC778
|
|
1218
|
+
- \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
|
|
1219
|
+
- \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
|
|
1220
|
+
MUST NOT DO:
|
|
1221
|
+
- \uCF54\uB4DC\uB97C \uC9C1\uC811 \uC218\uC815\uD558\uC9C0 \uB9C8\uC138\uC694 (\uBCF4\uACE0\uB9CC)
|
|
1222
|
+
- \uD14C\uC2A4\uD2B8\uB97C \uC0AD\uC81C\uD558\uAC70\uB098 \uC2A4\uD0B5\uD558\uC9C0 \uB9C8\uC138\uC694
|
|
1223
|
+
CONTEXT: [\uBCC0\uACBD\uD55C \uD30C\uC77C \uBAA9\uB85D\uACFC \uBCC0\uACBD \uB0B4\uC6A9 \uC694\uC57D\uC744 \uC5EC\uAE30\uC5D0 \uD3EC\uD568]
|
|
1224
|
+
"""
|
|
1225
|
+
)
|
|
1226
|
+
\`\`\`
|
|
1227
|
+
|
|
1228
|
+
\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.
|
|
1229
|
+
|
|
1230
|
+
### 2. \uC9C0\uC2DD \uC815\uB9AC (\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uC704\uC784)
|
|
1231
|
+
|
|
1232
|
+
\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.
|
|
1233
|
+
|
|
1234
|
+
**\uAE30\uB85D \uB300\uC0C1 \uD310\uB2E8 \uAE30\uC900:**
|
|
1156
1235
|
|
|
1157
1236
|
| \uC0C1\uD669 | \uD15C\uD50C\uB9BF | \uD30C\uC77C\uBA85 \uD328\uD134 |
|
|
1158
1237
|
| ------------------------------- | --------------------------------------------------- | --------------------------- |
|
|
@@ -1165,17 +1244,32 @@ var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC \uCCB4\uD06C\uB9AC\uC
|
|
|
1165
1244
|
| \uBC18\uBCF5 \uAC00\uB2A5\uD55C \uD504\uB85C\uC138\uC2A4 \uC815\uB9BD | [Runbook](.opencode/context/templates/runbook.md) | \`runbook-\uC81C\uBAA9.md\` |
|
|
1166
1245
|
| \uC2E4\uD5D8/\uB514\uBC84\uAE45 \uC911 \uD559\uC2B5 | [Insight](.opencode/context/templates/insight.md) | \`insight-\uC81C\uBAA9.md\` |
|
|
1167
1246
|
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1247
|
+
\uD574\uB2F9 \uC0AC\uD56D\uC774 \uC5C6\uC73C\uBA74 \uC774 \uB2E8\uACC4\uB294 \uAC74\uB108\uB6F0\uC138\uC694.
|
|
1248
|
+
|
|
1249
|
+
\`\`\`
|
|
1250
|
+
task(
|
|
1251
|
+
category="quick",
|
|
1252
|
+
load_skills=[],
|
|
1253
|
+
description="Write Zettelkasten knowledge note",
|
|
1254
|
+
prompt="""
|
|
1255
|
+
TASK: \uC544\uB798 \uB0B4\uC6A9\uC744 \uBC14\uD0D5\uC73C\uB85C Zettelkasten \uC9C0\uC2DD \uB178\uD2B8\uB97C \uC791\uC131\uD558\uC138\uC694.
|
|
1256
|
+
EXPECTED OUTCOME: \uD15C\uD50C\uB9BF\uC5D0 \uB9DE\uB294 \uB178\uD2B8 \uD30C\uC77C \uC0DD\uC131, \uAD00\uB828 \uB178\uD2B8 \uB9C1\uD06C \uC5F0\uACB0
|
|
1257
|
+
REQUIRED TOOLS: Read (\uD15C\uD50C\uB9BF \uC77D\uAE30), Write (\uB178\uD2B8 \uC791\uC131), Edit (\uAE30\uC874 \uB178\uD2B8 \uB9C1\uD06C \uCD94\uAC00)
|
|
1258
|
+
MUST DO:
|
|
1259
|
+
- \uD574\uB2F9 \uD15C\uD50C\uB9BF \uD30C\uC77C\uC744 \uC77D\uACE0 \uADF8 \uAD6C\uC870\uC5D0 \uB9DE\uCDB0 \uB178\uD2B8 \uC791\uC131
|
|
1260
|
+
- \uB178\uD2B8 \uCCAB \uC904: \uBA85\uD655\uD55C \uC81C\uBAA9 (# Title)
|
|
1261
|
+
- \uD575\uC2EC \uB0B4\uC6A9\uC744 \uC790\uAE30 \uC5B8\uC5B4\uB85C \uAC04\uACB0\uD558\uAC8C \uC11C\uC220 (\uBCF5\uC0AC-\uBD99\uC5EC\uB123\uAE30 \uAE08\uC9C0)
|
|
1262
|
+
- \uAD00\uB828 \uB178\uD2B8\uB97C [[relative/path/file.md]] \uD615\uD0DC\uC758 wikilink\uB85C \uC5F0\uACB0
|
|
1263
|
+
- 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
|
|
1264
|
+
- \uAE30\uC874 \uB178\uD2B8\uC758 \uB0B4\uC6A9\uC774 \uBCC0\uACBD\uC0AC\uD56D\uACFC \uBD88\uC77C\uCE58\uD558\uBA74 \uC5C5\uB370\uC774\uD2B8
|
|
1265
|
+
- \uB3C4\uBA54\uC778 \uD3F4\uB354\uC5D0 \uC800\uC7A5\uD588\uB2E4\uBA74 \uD574\uB2F9 INDEX.md\uC5D0 \uD56D\uBAA9 \uCD94\uAC00
|
|
1266
|
+
MUST NOT DO:
|
|
1267
|
+
- \uC18C\uC2A4 \uCF54\uB4DC\uB97C \uC218\uC815\uD558\uC9C0 \uB9C8\uC138\uC694 (\uB178\uD2B8\uB9CC \uC791\uC131)
|
|
1268
|
+
- \uB178\uD2B8\uC5D0 \uC5EC\uB7EC \uC8FC\uC81C\uB97C \uC11E\uC9C0 \uB9C8\uC138\uC694 (\uC6D0\uC790\uC131 \uC6D0\uCE59)
|
|
1269
|
+
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]
|
|
1270
|
+
"""
|
|
1271
|
+
)
|
|
1272
|
+
\`\`\`
|
|
1179
1273
|
`;
|
|
1180
1274
|
var DEFAULT_ADR_TEMPLATE = `# ADR-NNN: [\uC81C\uBAA9]
|
|
1181
1275
|
|
|
@@ -1416,31 +1510,6 @@ function scaffoldIfNeeded(projectDir) {
|
|
|
1416
1510
|
return false;
|
|
1417
1511
|
}
|
|
1418
1512
|
}
|
|
1419
|
-
function updateScaffold(projectDir) {
|
|
1420
|
-
const contextDir = join3(projectDir, ".opencode", "context");
|
|
1421
|
-
mkdirSync(join3(contextDir, "prompts"), { recursive: true });
|
|
1422
|
-
mkdirSync(join3(contextDir, "templates"), { recursive: true });
|
|
1423
|
-
const templateEntries = Object.fromEntries(Object.entries(TEMPLATE_FILES).map(([filename, content]) => [`templates/${filename}`, content]));
|
|
1424
|
-
const templates = {
|
|
1425
|
-
"config.jsonc": DEFAULT_CONFIG,
|
|
1426
|
-
[`prompts/${DEFAULTS.turnStartFile}`]: DEFAULT_TURN_START,
|
|
1427
|
-
[`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END,
|
|
1428
|
-
...templateEntries
|
|
1429
|
-
};
|
|
1430
|
-
const updated = [];
|
|
1431
|
-
for (const [path, content] of Object.entries(templates)) {
|
|
1432
|
-
const filePath = join3(contextDir, path);
|
|
1433
|
-
try {
|
|
1434
|
-
const existing = readFileSync4(filePath, "utf-8");
|
|
1435
|
-
if (existing === content)
|
|
1436
|
-
continue;
|
|
1437
|
-
} catch {}
|
|
1438
|
-
writeFileSync(filePath, content, "utf-8");
|
|
1439
|
-
updated.push(path);
|
|
1440
|
-
}
|
|
1441
|
-
writeVersion(contextDir, PLUGIN_VERSION);
|
|
1442
|
-
return updated;
|
|
1443
|
-
}
|
|
1444
1513
|
function getStoredVersion(projectDir) {
|
|
1445
1514
|
try {
|
|
1446
1515
|
return readFileSync4(join3(projectDir, ".opencode", "context", ".version"), "utf-8").trim();
|
|
@@ -1499,29 +1568,6 @@ var plugin = async ({ directory, client }) => {
|
|
|
1499
1568
|
}
|
|
1500
1569
|
const config = loadConfig(directory);
|
|
1501
1570
|
return {
|
|
1502
|
-
config: async (cfg) => {
|
|
1503
|
-
cfg.command ??= {};
|
|
1504
|
-
cfg.command["context-update"] = {
|
|
1505
|
-
template: "",
|
|
1506
|
-
description: "Update context scaffold files to latest plugin version"
|
|
1507
|
-
};
|
|
1508
|
-
},
|
|
1509
|
-
"command.execute.before": async (input, output) => {
|
|
1510
|
-
if (input.command !== "context-update")
|
|
1511
|
-
return;
|
|
1512
|
-
const updated = updateScaffold(directory);
|
|
1513
|
-
const text = updated.length === 0 ? "All scaffold files are already up to date." : `Updated ${updated.length} file(s):
|
|
1514
|
-
${updated.map((f) => `- ${f}`).join(`
|
|
1515
|
-
`)}`;
|
|
1516
|
-
const now = Date.now();
|
|
1517
|
-
output.parts.splice(0, output.parts.length, {
|
|
1518
|
-
id: `context-update-${now}`,
|
|
1519
|
-
sessionID: input.sessionID,
|
|
1520
|
-
messageID: `context-update-msg-${now}`,
|
|
1521
|
-
type: "text",
|
|
1522
|
-
text
|
|
1523
|
-
});
|
|
1524
|
-
},
|
|
1525
1571
|
"experimental.chat.messages.transform": async (_input, output) => {
|
|
1526
1572
|
if (output.messages.length === 0)
|
|
1527
1573
|
return;
|
package/package.json
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ksm0709/context",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Intent tools for Bun",
|
|
3
|
+
"version": "0.0.9",
|
|
5
4
|
"author": {
|
|
6
5
|
"name": "TaehoKang",
|
|
7
6
|
"email": "ksm07091@gmail.com"
|
|
8
7
|
},
|
|
9
8
|
"type": "module",
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"bin": {
|
|
11
|
+
"context": "./dist/cli/index.js"
|
|
12
|
+
},
|
|
10
13
|
"exports": {
|
|
11
14
|
".": {
|
|
15
|
+
"import": "./dist/index.js",
|
|
12
16
|
"types": "./dist/index.d.ts",
|
|
13
17
|
"default": "./dist/index.js"
|
|
14
18
|
}
|
|
@@ -20,9 +24,13 @@
|
|
|
20
24
|
"publishConfig": {
|
|
21
25
|
"access": "public"
|
|
22
26
|
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"lint": "eslint src --ext .ts"
|
|
31
|
+
},
|
|
23
32
|
"files": [
|
|
24
|
-
"dist"
|
|
25
|
-
"src/version.ts"
|
|
33
|
+
"dist"
|
|
26
34
|
],
|
|
27
35
|
"peerDependencies": {
|
|
28
36
|
"@opencode-ai/plugin": ">=1.0.0"
|
package/src/version.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const PLUGIN_VERSION = '0.0.6';
|