@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/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
- // src/version.ts
1096
- var PLUGIN_VERSION = "0.0.6";
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 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8
1142
-
1143
- \uC791\uC5C5\uC744 \uC644\uB8CC\uD558\uAE30 \uC804\uC5D0 \uBC18\uB4DC\uC2DC:
1144
-
1145
- ### \uD004\uB9AC\uD2F0 \uBCF4\uC7A5
1146
-
1147
- - [ ] \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 lint \uC2E4\uD589
1148
- - [ ] \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 formatter \uC2E4\uD589 (lint\uC640 \uBCC4\uAC1C)
1149
- - [ ] \uAE30\uC874 \uD14C\uC2A4\uD2B8 \uD1B5\uACFC \uD655\uC778
1150
- - [ ] \uBCC0\uACBD \uBC94\uC704 \uD655\uC778: \uC694\uCCAD\uACFC \uBB34\uAD00\uD55C \uD30C\uC77C\uC744 \uAC74\uB4DC\uB9AC\uC9C0 \uC54A\uC558\uB294\uAC00?
1151
- - [ ] \uC0C8\uB85C \uC791\uC131\uD558\uAC70\uB098 \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC758 \uD14C\uC2A4\uD2B8 \uCEE4\uBC84\uB9AC\uC9C0 80% \uC774\uC0C1 \uB2EC\uC131
1152
-
1153
- ### \uC9C0\uC2DD \uC815\uB9AC (Zettelkasten)
1154
-
1155
- \uC544\uB798 \uC0C1\uD669\uC5D0 \uD574\uB2F9\uD558\uBA74, \uD574\uB2F9 \uD15C\uD50C\uB9BF \uD30C\uC77C\uC744 \uC77D\uACE0 \uADF8 \uAD6C\uC870\uC5D0 \uB9DE\uCDB0 \uB178\uD2B8\uB97C \uC791\uC131\uD558\uC138\uC694.
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
- - [ ] \uC704 \uC0C1\uD669\uC5D0 \uD574\uB2F9\uD558\uB294 \uBC1C\uACAC\uC774 \uC788\uC5C8\uB2E4\uBA74 \uB178\uD2B8\uB97C \uC791\uC131\uD588\uB294\uAC00?
1169
- - [ ] \uAD00\uB828 \uAE30\uC874 \uB178\uD2B8\uC5D0 [[\uB9C1\uD06C]]\uB97C \uCD94\uAC00\uD588\uB294\uAC00?
1170
- - [ ] \uAE30\uC874 \uB178\uD2B8\uC758 \uB0B4\uC6A9\uC774 \uBCC0\uACBD\uC0AC\uD56D\uACFC \uBD88\uC77C\uCE58\uD558\uBA74 \uC5C5\uB370\uC774\uD2B8\uD588\uB294\uAC00?
1171
- - [ ] \uB178\uD2B8\uB97C \uB3C4\uBA54\uC778 \uD3F4\uB354\uC5D0 \uC800\uC7A5\uD588\uB2E4\uBA74 \uD574\uB2F9 INDEX.md\uC5D0 \uCD94\uAC00\uD588\uB294\uAC00?
1172
-
1173
- #### \uB178\uD2B8 \uC791\uC131 \uADDC\uCE59
1174
-
1175
- - \uCCAB \uC904: \uBA85\uD655\uD55C \uC81C\uBAA9 (\`# Title\`)
1176
- - \uD575\uC2EC \uB0B4\uC6A9\uC744 \uC790\uC2E0\uC758 \uC5B8\uC5B4\uB85C \uAC04\uACB0\uD558\uAC8C \uC11C\uC220
1177
- - \uAD00\uB828 \uB178\uD2B8\uB97C \`[[relative/path/file.md]]\` \uD615\uD0DC\uC758 wikilink\uB85C \uC5F0\uACB0
1178
- - 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
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.7",
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';