@ksm0709/context 0.0.14 → 0.0.16
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 +23 -12
- package/dist/index.js +78 -25
- package/package.json +4 -3
- package/dist/constants.d.ts +0 -14
- package/dist/context.js +0 -1579
- package/dist/index.d.ts +0 -1
- package/dist/types.d.ts +0 -13
package/dist/cli/index.js
CHANGED
|
@@ -16,7 +16,6 @@ var DEFAULTS = {
|
|
|
16
16
|
promptDir: ".opencode/context/prompts",
|
|
17
17
|
turnStartFile: "turn-start.md",
|
|
18
18
|
turnEndFile: "turn-end.md",
|
|
19
|
-
subagentTurnEndFile: "subagent-turn-end.md",
|
|
20
19
|
blockedToolPatterns: ["^task$", "^background_", "agent"],
|
|
21
20
|
knowledgeSources: ["AGENTS.md"],
|
|
22
21
|
templateDir: ".opencode/context/templates",
|
|
@@ -34,7 +33,7 @@ var LIMITS = {
|
|
|
34
33
|
// package.json
|
|
35
34
|
var package_default = {
|
|
36
35
|
name: "@ksm0709/context",
|
|
37
|
-
version: "0.0.
|
|
36
|
+
version: "0.0.16",
|
|
38
37
|
author: {
|
|
39
38
|
name: "TaehoKang",
|
|
40
39
|
email: "ksm07091@gmail.com"
|
|
@@ -61,7 +60,8 @@ var package_default = {
|
|
|
61
60
|
scripts: {
|
|
62
61
|
build: "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun",
|
|
63
62
|
test: "vitest run",
|
|
64
|
-
lint: "eslint src --ext .ts"
|
|
63
|
+
lint: "eslint src --ext .ts",
|
|
64
|
+
prepublishOnly: "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun"
|
|
65
65
|
},
|
|
66
66
|
files: [
|
|
67
67
|
"dist"
|
|
@@ -70,7 +70,7 @@ var package_default = {
|
|
|
70
70
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
71
71
|
},
|
|
72
72
|
dependencies: {
|
|
73
|
-
"@ksm0709/context": "
|
|
73
|
+
"@ksm0709/context": "0.0.16",
|
|
74
74
|
"jsonc-parser": "^3.0.0"
|
|
75
75
|
},
|
|
76
76
|
devDependencies: {
|
|
@@ -96,8 +96,7 @@ var DEFAULT_CONFIG = `{
|
|
|
96
96
|
// See: https://github.com/ksm0709/context
|
|
97
97
|
"prompts": {
|
|
98
98
|
"turnStart": ".opencode/context/prompts/turn-start.md",
|
|
99
|
-
"turnEnd": ".opencode/context/prompts/turn-end.md"
|
|
100
|
-
"subagentTurnEnd": ".opencode/context/prompts/subagent-turn-end.md"
|
|
99
|
+
"turnEnd": ".opencode/context/prompts/turn-end.md"
|
|
101
100
|
},
|
|
102
101
|
"subagentConfig": {
|
|
103
102
|
"blockedToolPatterns": ["^task$", "^background_", "agent"]
|
|
@@ -121,11 +120,17 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
121
120
|
### \uC791\uC5C5 \uC804 \uD544\uC218
|
|
122
121
|
|
|
123
122
|
- \uC544\uB798 **Available Knowledge** \uBAA9\uB85D\uC5D0\uC11C \uD604\uC7AC \uC791\uC5C5\uACFC \uAD00\uB828\uB41C \uBB38\uC11C\uB97C **\uBA3C\uC800** \uC77D\uC73C\uC138\uC694
|
|
123
|
+
${"<"}!-- primary-only -->
|
|
124
124
|
- \uC9C1\uC811 \uC77D\uAE30 \uC804\uC5D0 \uC544\uB798\uC640 \uAC19\uC774 **\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8(explore)\uC5D0 \uC704\uC784**\uD558\uC5EC, \uC5F0\uAD00\uB41C \uB178\uD2B8\uB97C \uC9D1\uC911 \uD0D0\uC0C9\uD558\uACE0 \uC791\uC5C5\uC5D0 \uD544\uC694\uD55C \uB0B4\uC6A9\uC744 \uC694\uC57D\uD558\uB3C4\uB85D \uC9C0\uC2DC\uD558\uC138\uC694.
|
|
125
|
+
${"<"}!-- /primary-only -->
|
|
126
|
+
${"<"}!-- subagent-only -->
|
|
127
|
+
- \uAD00\uB828 \uBB38\uC11C\uB97C \uC9C1\uC811 \uC77D\uACE0 \uC791\uC5C5\uC5D0 \uC801\uC6A9\uD558\uC138\uC694. \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uB97C \uD638\uCD9C\uD558\uC9C0 \uB9C8\uC138\uC694.
|
|
128
|
+
${"<"}!-- /subagent-only -->
|
|
125
129
|
- \uB3C4\uBA54\uC778 \uD3F4\uB354 \uAD6C\uC870\uAC00 \uC788\uB2E4\uBA74 INDEX.md\uC758 \uC694\uC57D\uC744 \uCC38\uACE0\uD558\uC5EC \uD544\uC694\uD55C \uB178\uD2B8\uB9CC \uC120\uD0DD\uC801\uC73C\uB85C \uC77D\uC73C\uC138\uC694
|
|
126
130
|
- \uBB38\uC11C \uB0B4 [[\uB9C1\uD06C]]\uB97C \uB530\uB77C\uAC00\uBA70 \uAD00\uB828 \uB178\uD2B8\uB97C \uD0D0\uC0C9\uD558\uC138\uC694 -- \uB9C1\uD06C\uB97C \uB193\uCE58\uBA74 \uC911\uC694\uD55C \uB9E5\uB77D\uC744 \uC783\uC2B5\uB2C8\uB2E4
|
|
127
131
|
- \uC9C0\uC2DD \uD30C\uC77C\uC5D0 \uAE30\uB85D\uB41C \uC544\uD0A4\uD14D\uCC98 \uACB0\uC815, \uD328\uD134, \uC81C\uC57D\uC0AC\uD56D\uC744 \uBC18\uB4DC\uC2DC \uB530\uB974\uC138\uC694
|
|
128
132
|
|
|
133
|
+
${"<"}!-- primary-only -->
|
|
129
134
|
### \uC9C0\uC2DD \uD0D0\uC0C9 (\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uC704\uC784)
|
|
130
135
|
|
|
131
136
|
\uD604\uC7AC \uC791\uC5C5\uACFC \uAD00\uB828\uB41C \uC9C0\uC2DD \uB178\uD2B8\uB97C \uC77D\uACE0 \uC694\uC57D\uD558\uB294 \uC791\uC5C5\uC744 **\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC5D0 \uC704\uC784**\uD558\uC5EC \uCEE8\uD14D\uC2A4\uD2B8 \uD30C\uC545\uC744 \uD6A8\uC728\uD654\uD558\uC138\uC694.
|
|
@@ -156,6 +161,8 @@ task(
|
|
|
156
161
|
)
|
|
157
162
|
\`\`\`
|
|
158
163
|
|
|
164
|
+
${"<"}!-- /primary-only -->
|
|
165
|
+
|
|
159
166
|
|
|
160
167
|
- \uC544\uB798 **Available Knowledge** \uBAA9\uB85D\uC5D0\uC11C \uD604\uC7AC \uC791\uC5C5\uACFC \uAD00\uB828\uB41C \uBB38\uC11C\uB97C **\uBA3C\uC800** \uC77D\uC73C\uC138\uC694
|
|
161
168
|
- \uB3C4\uBA54\uC778 \uD3F4\uB354 \uAD6C\uC870\uAC00 \uC788\uB2E4\uBA74 INDEX.md\uC758 \uC694\uC57D\uC744 \uCC38\uACE0\uD558\uC5EC \uD544\uC694\uD55C \uB178\uD2B8\uB9CC \uC120\uD0DD\uC801\uC73C\uB85C \uC77D\uC73C\uC138\uC694
|
|
@@ -172,9 +179,12 @@ task(
|
|
|
172
179
|
|
|
173
180
|
- AGENTS.md\uC758 \uC9C0\uC2DC\uC0AC\uD56D\uC774 \uD56D\uC0C1 \uCD5C\uC6B0\uC120
|
|
174
181
|
- \uC9C0\uC2DD \uB178\uD2B8\uC758 \uACB0\uC815\uC0AC\uD56D > \uC77C\uBC18\uC801 \uAD00\uD589
|
|
182
|
+
${"<"}!-- primary-only -->
|
|
175
183
|
- \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
|
|
184
|
+
${"<"}!-- /primary-only -->
|
|
176
185
|
`;
|
|
177
|
-
var DEFAULT_TURN_END =
|
|
186
|
+
var DEFAULT_TURN_END = `${"<"}!-- primary-only -->
|
|
187
|
+
## \uC791\uC5C5 \uB9C8\uBB34\uB9AC
|
|
178
188
|
|
|
179
189
|
\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.
|
|
180
190
|
\uBA54\uC778 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC9C1\uC811 \uC218\uD589\uD558\uC9C0 \uB9C8\uC138\uC694.
|
|
@@ -252,13 +262,16 @@ task(
|
|
|
252
262
|
"""
|
|
253
263
|
)
|
|
254
264
|
\`\`\`
|
|
255
|
-
|
|
256
|
-
|
|
265
|
+
|
|
266
|
+
${"<"}!-- /primary-only -->
|
|
267
|
+
${"<"}!-- subagent-only -->
|
|
268
|
+
<environment-constraints>
|
|
257
269
|
\uB2F9\uC2E0\uC740 \uD604\uC7AC \uBA54\uC778 \uC624\uCF00\uC2A4\uD2B8\uB808\uC774\uD130\uAC00 \uD638\uCD9C\uD55C **\uB9D0\uB2E8 \uC6CC\uCEE4(Worker) \uC5D0\uC774\uC804\uD2B8**\uC785\uB2C8\uB2E4.
|
|
258
270
|
\uD604\uC7AC \uB2F9\uC2E0\uC758 \uC2E4\uD589 \uD658\uACBD(Sandbox)\uC5D0\uC11C\uB294 \uB124\uD2B8\uC6CC\uD06C \uC790\uC6D0 \uBCF4\uD638\uB97C \uC704\uD574 **\uB2E4\uB978 \uC5D0\uC774\uC804\uD2B8\uB97C \uC0DD\uC131, \uD638\uCD9C, \uC704\uC784\uD558\uB294 \uBAA8\uB4E0 \uB3C4\uAD6C(\uC608: task, background_task \uB4F1)\uC758 \uAD8C\uD55C\uC774 \uC2DC\uC2A4\uD15C \uB808\uBCA8\uC5D0\uC11C \uD68C\uC218**\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
|
|
259
271
|
|
|
260
272
|
\uB9CC\uC57D \uC791\uC5C5 \uC911 \uB2E4\uB978 \uC804\uBB38\uAC00(explore, librarian \uB4F1)\uC758 \uB3C4\uC6C0\uC774 \uD544\uC694\uD558\uB2E4\uBA74, \uC9C1\uC811 \uC5D0\uC774\uC804\uD2B8\uB97C \uBD80\uB974\uB824 \uC2DC\uB3C4\uD558\uC9C0 \uB9C8\uC138\uC694. \uB300\uC2E0 \uD604\uC7AC\uAE4C\uC9C0\uC758 \uBD84\uC11D \uACB0\uACFC\uB97C \uC694\uC57D\uD558\uACE0 "OOO \uC5D0\uC774\uC804\uD2B8\uC758 \uB3C4\uC6C0\uC774 \uD544\uC694\uD568"\uC774\uB77C\uB294 \uBA54\uC2DC\uC9C0\uC640 \uD568\uAED8 \uC791\uC5C5\uC744 \uC885\uB8CC(Complete)\uD558\uC5EC \uBA54\uC778 \uC5D0\uC774\uC804\uD2B8\uC5D0\uAC8C \uC81C\uC5B4\uAD8C\uC744 \uBC18\uD658\uD558\uC138\uC694.
|
|
261
273
|
</environment-constraints>
|
|
274
|
+
${"<"}!-- /subagent-only -->
|
|
262
275
|
`;
|
|
263
276
|
var DEFAULT_ADR_TEMPLATE = `# ADR-NNN: [\uC81C\uBAA9]
|
|
264
277
|
|
|
@@ -486,7 +499,6 @@ function updateScaffold(projectDir) {
|
|
|
486
499
|
"config.jsonc": DEFAULT_CONFIG,
|
|
487
500
|
[`prompts/${DEFAULTS.turnStartFile}`]: DEFAULT_TURN_START,
|
|
488
501
|
[`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END,
|
|
489
|
-
[`prompts/${DEFAULTS.subagentTurnEndFile}`]: DEFAULT_SUBAGENT_TURN_END,
|
|
490
502
|
...templateEntries
|
|
491
503
|
};
|
|
492
504
|
const updated = [];
|
|
@@ -511,8 +523,7 @@ function updatePrompts(projectDir) {
|
|
|
511
523
|
mkdirSync(join(contextDir, "prompts"), { recursive: true });
|
|
512
524
|
const prompts = {
|
|
513
525
|
[`prompts/${DEFAULTS.turnStartFile}`]: DEFAULT_TURN_START,
|
|
514
|
-
[`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END
|
|
515
|
-
[`prompts/${DEFAULTS.subagentTurnEndFile}`]: DEFAULT_SUBAGENT_TURN_END
|
|
526
|
+
[`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END
|
|
516
527
|
};
|
|
517
528
|
const updated = [];
|
|
518
529
|
for (const [path, content] of Object.entries(prompts)) {
|
package/dist/index.js
CHANGED
|
@@ -816,7 +816,6 @@ var DEFAULTS = {
|
|
|
816
816
|
promptDir: ".opencode/context/prompts",
|
|
817
817
|
turnStartFile: "turn-start.md",
|
|
818
818
|
turnEndFile: "turn-end.md",
|
|
819
|
-
subagentTurnEndFile: "subagent-turn-end.md",
|
|
820
819
|
blockedToolPatterns: ["^task$", "^background_", "agent"],
|
|
821
820
|
knowledgeSources: ["AGENTS.md"],
|
|
822
821
|
templateDir: ".opencode/context/templates",
|
|
@@ -837,14 +836,13 @@ function getDefaultConfig() {
|
|
|
837
836
|
return {
|
|
838
837
|
prompts: {
|
|
839
838
|
turnStart: join(DEFAULTS.promptDir, DEFAULTS.turnStartFile),
|
|
840
|
-
turnEnd: join(DEFAULTS.promptDir, DEFAULTS.turnEndFile)
|
|
841
|
-
subagentTurnEnd: join(DEFAULTS.promptDir, DEFAULTS.subagentTurnEndFile)
|
|
839
|
+
turnEnd: join(DEFAULTS.promptDir, DEFAULTS.turnEndFile)
|
|
842
840
|
},
|
|
843
841
|
subagentConfig: {
|
|
844
842
|
blockedToolPatterns: [...DEFAULTS.blockedToolPatterns]
|
|
845
843
|
},
|
|
846
844
|
knowledge: {
|
|
847
|
-
dir:
|
|
845
|
+
dir: "docs",
|
|
848
846
|
sources: [...DEFAULTS.knowledgeSources],
|
|
849
847
|
mode: "auto",
|
|
850
848
|
indexFilename: DEFAULTS.indexFilename,
|
|
@@ -857,8 +855,7 @@ function mergeWithDefaults(partial) {
|
|
|
857
855
|
return {
|
|
858
856
|
prompts: {
|
|
859
857
|
turnStart: partial.prompts?.turnStart ?? defaults.prompts.turnStart,
|
|
860
|
-
turnEnd: partial.prompts?.turnEnd ?? defaults.prompts.turnEnd
|
|
861
|
-
subagentTurnEnd: partial.prompts?.subagentTurnEnd ?? defaults.prompts.subagentTurnEnd
|
|
858
|
+
turnEnd: partial.prompts?.turnEnd ?? defaults.prompts.turnEnd
|
|
862
859
|
},
|
|
863
860
|
subagentConfig: {
|
|
864
861
|
blockedToolPatterns: partial.subagentConfig?.blockedToolPatterns ?? defaults.subagentConfig.blockedToolPatterns
|
|
@@ -1103,7 +1100,7 @@ import { join as join3 } from "path";
|
|
|
1103
1100
|
// package.json
|
|
1104
1101
|
var package_default = {
|
|
1105
1102
|
name: "@ksm0709/context",
|
|
1106
|
-
version: "0.0.
|
|
1103
|
+
version: "0.0.16",
|
|
1107
1104
|
author: {
|
|
1108
1105
|
name: "TaehoKang",
|
|
1109
1106
|
email: "ksm07091@gmail.com"
|
|
@@ -1130,7 +1127,8 @@ var package_default = {
|
|
|
1130
1127
|
scripts: {
|
|
1131
1128
|
build: "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun",
|
|
1132
1129
|
test: "vitest run",
|
|
1133
|
-
lint: "eslint src --ext .ts"
|
|
1130
|
+
lint: "eslint src --ext .ts",
|
|
1131
|
+
prepublishOnly: "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun"
|
|
1134
1132
|
},
|
|
1135
1133
|
files: [
|
|
1136
1134
|
"dist"
|
|
@@ -1139,7 +1137,7 @@ var package_default = {
|
|
|
1139
1137
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
1140
1138
|
},
|
|
1141
1139
|
dependencies: {
|
|
1142
|
-
"@ksm0709/context": "
|
|
1140
|
+
"@ksm0709/context": "0.0.16",
|
|
1143
1141
|
"jsonc-parser": "^3.0.0"
|
|
1144
1142
|
},
|
|
1145
1143
|
devDependencies: {
|
|
@@ -1165,8 +1163,7 @@ var DEFAULT_CONFIG = `{
|
|
|
1165
1163
|
// See: https://github.com/ksm0709/context
|
|
1166
1164
|
"prompts": {
|
|
1167
1165
|
"turnStart": ".opencode/context/prompts/turn-start.md",
|
|
1168
|
-
"turnEnd": ".opencode/context/prompts/turn-end.md"
|
|
1169
|
-
"subagentTurnEnd": ".opencode/context/prompts/subagent-turn-end.md"
|
|
1166
|
+
"turnEnd": ".opencode/context/prompts/turn-end.md"
|
|
1170
1167
|
},
|
|
1171
1168
|
"subagentConfig": {
|
|
1172
1169
|
"blockedToolPatterns": ["^task$", "^background_", "agent"]
|
|
@@ -1190,11 +1187,17 @@ var DEFAULT_TURN_START = `## Knowledge Context
|
|
|
1190
1187
|
### \uC791\uC5C5 \uC804 \uD544\uC218
|
|
1191
1188
|
|
|
1192
1189
|
- \uC544\uB798 **Available Knowledge** \uBAA9\uB85D\uC5D0\uC11C \uD604\uC7AC \uC791\uC5C5\uACFC \uAD00\uB828\uB41C \uBB38\uC11C\uB97C **\uBA3C\uC800** \uC77D\uC73C\uC138\uC694
|
|
1190
|
+
${"<"}!-- primary-only -->
|
|
1193
1191
|
- \uC9C1\uC811 \uC77D\uAE30 \uC804\uC5D0 \uC544\uB798\uC640 \uAC19\uC774 **\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8(explore)\uC5D0 \uC704\uC784**\uD558\uC5EC, \uC5F0\uAD00\uB41C \uB178\uD2B8\uB97C \uC9D1\uC911 \uD0D0\uC0C9\uD558\uACE0 \uC791\uC5C5\uC5D0 \uD544\uC694\uD55C \uB0B4\uC6A9\uC744 \uC694\uC57D\uD558\uB3C4\uB85D \uC9C0\uC2DC\uD558\uC138\uC694.
|
|
1192
|
+
${"<"}!-- /primary-only -->
|
|
1193
|
+
${"<"}!-- subagent-only -->
|
|
1194
|
+
- \uAD00\uB828 \uBB38\uC11C\uB97C \uC9C1\uC811 \uC77D\uACE0 \uC791\uC5C5\uC5D0 \uC801\uC6A9\uD558\uC138\uC694. \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uB97C \uD638\uCD9C\uD558\uC9C0 \uB9C8\uC138\uC694.
|
|
1195
|
+
${"<"}!-- /subagent-only -->
|
|
1194
1196
|
- \uB3C4\uBA54\uC778 \uD3F4\uB354 \uAD6C\uC870\uAC00 \uC788\uB2E4\uBA74 INDEX.md\uC758 \uC694\uC57D\uC744 \uCC38\uACE0\uD558\uC5EC \uD544\uC694\uD55C \uB178\uD2B8\uB9CC \uC120\uD0DD\uC801\uC73C\uB85C \uC77D\uC73C\uC138\uC694
|
|
1195
1197
|
- \uBB38\uC11C \uB0B4 [[\uB9C1\uD06C]]\uB97C \uB530\uB77C\uAC00\uBA70 \uAD00\uB828 \uB178\uD2B8\uB97C \uD0D0\uC0C9\uD558\uC138\uC694 -- \uB9C1\uD06C\uB97C \uB193\uCE58\uBA74 \uC911\uC694\uD55C \uB9E5\uB77D\uC744 \uC783\uC2B5\uB2C8\uB2E4
|
|
1196
1198
|
- \uC9C0\uC2DD \uD30C\uC77C\uC5D0 \uAE30\uB85D\uB41C \uC544\uD0A4\uD14D\uCC98 \uACB0\uC815, \uD328\uD134, \uC81C\uC57D\uC0AC\uD56D\uC744 \uBC18\uB4DC\uC2DC \uB530\uB974\uC138\uC694
|
|
1197
1199
|
|
|
1200
|
+
${"<"}!-- primary-only -->
|
|
1198
1201
|
### \uC9C0\uC2DD \uD0D0\uC0C9 (\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 \uC704\uC784)
|
|
1199
1202
|
|
|
1200
1203
|
\uD604\uC7AC \uC791\uC5C5\uACFC \uAD00\uB828\uB41C \uC9C0\uC2DD \uB178\uD2B8\uB97C \uC77D\uACE0 \uC694\uC57D\uD558\uB294 \uC791\uC5C5\uC744 **\uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC5D0 \uC704\uC784**\uD558\uC5EC \uCEE8\uD14D\uC2A4\uD2B8 \uD30C\uC545\uC744 \uD6A8\uC728\uD654\uD558\uC138\uC694.
|
|
@@ -1225,6 +1228,8 @@ task(
|
|
|
1225
1228
|
)
|
|
1226
1229
|
\`\`\`
|
|
1227
1230
|
|
|
1231
|
+
${"<"}!-- /primary-only -->
|
|
1232
|
+
|
|
1228
1233
|
|
|
1229
1234
|
- \uC544\uB798 **Available Knowledge** \uBAA9\uB85D\uC5D0\uC11C \uD604\uC7AC \uC791\uC5C5\uACFC \uAD00\uB828\uB41C \uBB38\uC11C\uB97C **\uBA3C\uC800** \uC77D\uC73C\uC138\uC694
|
|
1230
1235
|
- \uB3C4\uBA54\uC778 \uD3F4\uB354 \uAD6C\uC870\uAC00 \uC788\uB2E4\uBA74 INDEX.md\uC758 \uC694\uC57D\uC744 \uCC38\uACE0\uD558\uC5EC \uD544\uC694\uD55C \uB178\uD2B8\uB9CC \uC120\uD0DD\uC801\uC73C\uB85C \uC77D\uC73C\uC138\uC694
|
|
@@ -1241,9 +1246,12 @@ task(
|
|
|
1241
1246
|
|
|
1242
1247
|
- AGENTS.md\uC758 \uC9C0\uC2DC\uC0AC\uD56D\uC774 \uD56D\uC0C1 \uCD5C\uC6B0\uC120
|
|
1243
1248
|
- \uC9C0\uC2DD \uB178\uD2B8\uC758 \uACB0\uC815\uC0AC\uD56D > \uC77C\uBC18\uC801 \uAD00\uD589
|
|
1249
|
+
${"<"}!-- primary-only -->
|
|
1244
1250
|
- \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
|
|
1251
|
+
${"<"}!-- /primary-only -->
|
|
1245
1252
|
`;
|
|
1246
|
-
var DEFAULT_TURN_END =
|
|
1253
|
+
var DEFAULT_TURN_END = `${"<"}!-- primary-only -->
|
|
1254
|
+
## \uC791\uC5C5 \uB9C8\uBB34\uB9AC
|
|
1247
1255
|
|
|
1248
1256
|
\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.
|
|
1249
1257
|
\uBA54\uC778 \uC5D0\uC774\uC804\uD2B8\uAC00 \uC9C1\uC811 \uC218\uD589\uD558\uC9C0 \uB9C8\uC138\uC694.
|
|
@@ -1321,13 +1329,16 @@ task(
|
|
|
1321
1329
|
"""
|
|
1322
1330
|
)
|
|
1323
1331
|
\`\`\`
|
|
1324
|
-
|
|
1325
|
-
|
|
1332
|
+
|
|
1333
|
+
${"<"}!-- /primary-only -->
|
|
1334
|
+
${"<"}!-- subagent-only -->
|
|
1335
|
+
<environment-constraints>
|
|
1326
1336
|
\uB2F9\uC2E0\uC740 \uD604\uC7AC \uBA54\uC778 \uC624\uCF00\uC2A4\uD2B8\uB808\uC774\uD130\uAC00 \uD638\uCD9C\uD55C **\uB9D0\uB2E8 \uC6CC\uCEE4(Worker) \uC5D0\uC774\uC804\uD2B8**\uC785\uB2C8\uB2E4.
|
|
1327
1337
|
\uD604\uC7AC \uB2F9\uC2E0\uC758 \uC2E4\uD589 \uD658\uACBD(Sandbox)\uC5D0\uC11C\uB294 \uB124\uD2B8\uC6CC\uD06C \uC790\uC6D0 \uBCF4\uD638\uB97C \uC704\uD574 **\uB2E4\uB978 \uC5D0\uC774\uC804\uD2B8\uB97C \uC0DD\uC131, \uD638\uCD9C, \uC704\uC784\uD558\uB294 \uBAA8\uB4E0 \uB3C4\uAD6C(\uC608: task, background_task \uB4F1)\uC758 \uAD8C\uD55C\uC774 \uC2DC\uC2A4\uD15C \uB808\uBCA8\uC5D0\uC11C \uD68C\uC218**\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
|
|
1328
1338
|
|
|
1329
1339
|
\uB9CC\uC57D \uC791\uC5C5 \uC911 \uB2E4\uB978 \uC804\uBB38\uAC00(explore, librarian \uB4F1)\uC758 \uB3C4\uC6C0\uC774 \uD544\uC694\uD558\uB2E4\uBA74, \uC9C1\uC811 \uC5D0\uC774\uC804\uD2B8\uB97C \uBD80\uB974\uB824 \uC2DC\uB3C4\uD558\uC9C0 \uB9C8\uC138\uC694. \uB300\uC2E0 \uD604\uC7AC\uAE4C\uC9C0\uC758 \uBD84\uC11D \uACB0\uACFC\uB97C \uC694\uC57D\uD558\uACE0 "OOO \uC5D0\uC774\uC804\uD2B8\uC758 \uB3C4\uC6C0\uC774 \uD544\uC694\uD568"\uC774\uB77C\uB294 \uBA54\uC2DC\uC9C0\uC640 \uD568\uAED8 \uC791\uC5C5\uC744 \uC885\uB8CC(Complete)\uD558\uC5EC \uBA54\uC778 \uC5D0\uC774\uC804\uD2B8\uC5D0\uAC8C \uC81C\uC5B4\uAD8C\uC744 \uBC18\uD658\uD558\uC138\uC694.
|
|
1330
1340
|
</environment-constraints>
|
|
1341
|
+
${"<"}!-- /subagent-only -->
|
|
1331
1342
|
`;
|
|
1332
1343
|
var DEFAULT_ADR_TEMPLATE = `# ADR-NNN: [\uC81C\uBAA9]
|
|
1333
1344
|
|
|
@@ -1559,7 +1570,6 @@ function scaffoldIfNeeded(projectDir) {
|
|
|
1559
1570
|
writeFileSync(join3(contextDir, "config.jsonc"), DEFAULT_CONFIG, "utf-8");
|
|
1560
1571
|
writeFileSync(join3(promptsDir, DEFAULTS.turnStartFile), DEFAULT_TURN_START, "utf-8");
|
|
1561
1572
|
writeFileSync(join3(promptsDir, DEFAULTS.turnEndFile), DEFAULT_TURN_END, "utf-8");
|
|
1562
|
-
writeFileSync(join3(promptsDir, DEFAULTS.subagentTurnEndFile), DEFAULT_SUBAGENT_TURN_END, "utf-8");
|
|
1563
1573
|
for (const [filename, content] of Object.entries(TEMPLATE_FILES)) {
|
|
1564
1574
|
writeFileSync(join3(templatesDir, filename), content, "utf-8");
|
|
1565
1575
|
}
|
|
@@ -1602,6 +1612,49 @@ function autoUpdateTemplates(projectDir) {
|
|
|
1602
1612
|
return updated;
|
|
1603
1613
|
}
|
|
1604
1614
|
|
|
1615
|
+
// src/lib/prompt-filter.ts
|
|
1616
|
+
function filterByAgentType(content, isSubagent) {
|
|
1617
|
+
const process = (text, marker, shouldRemove) => {
|
|
1618
|
+
const startTag = `<!-- ${marker} -->`;
|
|
1619
|
+
const endTag = `<!-- /${marker} -->`;
|
|
1620
|
+
if (!text.includes(startTag))
|
|
1621
|
+
return text;
|
|
1622
|
+
if (!text.includes(endTag))
|
|
1623
|
+
return text;
|
|
1624
|
+
const regex = new RegExp(`${startTag}\\n?([\\s\\S]*?)${endTag}\\n?`, "g");
|
|
1625
|
+
if (shouldRemove) {
|
|
1626
|
+
return text.replace(regex, "");
|
|
1627
|
+
} else {
|
|
1628
|
+
return text.replace(regex, "$1");
|
|
1629
|
+
}
|
|
1630
|
+
};
|
|
1631
|
+
let filtered = content;
|
|
1632
|
+
if (isSubagent) {
|
|
1633
|
+
filtered = process(filtered, "primary-only", true);
|
|
1634
|
+
filtered = process(filtered, "subagent-only", false);
|
|
1635
|
+
} else {
|
|
1636
|
+
filtered = process(filtered, "subagent-only", true);
|
|
1637
|
+
filtered = process(filtered, "primary-only", false);
|
|
1638
|
+
}
|
|
1639
|
+
return filtered;
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
// src/lib/subagent-detector.ts
|
|
1643
|
+
async function isSubagentSession(getSession, sessionID, cache) {
|
|
1644
|
+
if (!sessionID)
|
|
1645
|
+
return false;
|
|
1646
|
+
if (cache.has(sessionID))
|
|
1647
|
+
return cache.get(sessionID);
|
|
1648
|
+
try {
|
|
1649
|
+
const session = await getSession(sessionID);
|
|
1650
|
+
const result = !!session?.parentID;
|
|
1651
|
+
cache.set(sessionID, result);
|
|
1652
|
+
return result;
|
|
1653
|
+
} catch {
|
|
1654
|
+
return false;
|
|
1655
|
+
}
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1605
1658
|
// src/index.ts
|
|
1606
1659
|
var plugin = async ({ directory, client }) => {
|
|
1607
1660
|
const scaffolded = scaffoldIfNeeded(directory);
|
|
@@ -1626,14 +1679,13 @@ var plugin = async ({ directory, client }) => {
|
|
|
1626
1679
|
}
|
|
1627
1680
|
}
|
|
1628
1681
|
const config = loadConfig(directory);
|
|
1682
|
+
const subagentCache = new Map;
|
|
1683
|
+
const getSession = (id) => client.session.get({ path: { id } });
|
|
1629
1684
|
return {
|
|
1630
1685
|
"tool.execute.before": async (input) => {
|
|
1631
1686
|
try {
|
|
1632
|
-
const
|
|
1633
|
-
if (
|
|
1634
|
-
return;
|
|
1635
|
-
const isSubagent = ["explore", "librarian", "oracle", "Sisyphus-Junior"].includes(session.agent);
|
|
1636
|
-
if (isSubagent) {
|
|
1687
|
+
const subagent = await isSubagentSession(getSession, input.sessionID, subagentCache);
|
|
1688
|
+
if (subagent) {
|
|
1637
1689
|
const patterns = config.subagentConfig?.blockedToolPatterns ?? DEFAULTS.blockedToolPatterns;
|
|
1638
1690
|
const isBlocked = patterns.some((pattern) => new RegExp(pattern, "i").test(input.tool));
|
|
1639
1691
|
if (isBlocked) {
|
|
@@ -1653,7 +1705,9 @@ var plugin = async ({ directory, client }) => {
|
|
|
1653
1705
|
if (!lastUserMsg)
|
|
1654
1706
|
return;
|
|
1655
1707
|
const turnStartPath = join4(directory, config.prompts.turnStart ?? join4(DEFAULTS.promptDir, DEFAULTS.turnStartFile));
|
|
1656
|
-
const
|
|
1708
|
+
const sessionID = lastUserMsg.info.sessionID;
|
|
1709
|
+
const subagent = await isSubagentSession(getSession, sessionID, subagentCache);
|
|
1710
|
+
const turnStart = filterByAgentType(readPromptFile(turnStartPath) ?? "", subagent);
|
|
1657
1711
|
const knowledgeIndex = buildKnowledgeIndexV2(directory, config.knowledge);
|
|
1658
1712
|
const indexContent = knowledgeIndex.mode === "flat" ? formatKnowledgeIndex(knowledgeIndex.individualFiles) : formatDomainIndex(knowledgeIndex);
|
|
1659
1713
|
const combinedContent = [turnStart, indexContent].filter(Boolean).join(`
|
|
@@ -1668,10 +1722,9 @@ var plugin = async ({ directory, client }) => {
|
|
|
1668
1722
|
text: combinedContent
|
|
1669
1723
|
});
|
|
1670
1724
|
}
|
|
1671
|
-
const
|
|
1672
|
-
const
|
|
1673
|
-
const
|
|
1674
|
-
const turnEnd = readPromptFile(turnEndPath);
|
|
1725
|
+
const turnEndPath = join4(directory, config.prompts.turnEnd ?? join4(DEFAULTS.promptDir, DEFAULTS.turnEndFile));
|
|
1726
|
+
const rawTurnEnd = readPromptFile(turnEndPath);
|
|
1727
|
+
const turnEnd = rawTurnEnd ? filterByAgentType(rawTurnEnd, subagent) : null;
|
|
1675
1728
|
if (!turnEnd)
|
|
1676
1729
|
return;
|
|
1677
1730
|
const msgId = `context-turn-end-${Date.now()}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ksm0709/context",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "TaehoKang",
|
|
6
6
|
"email": "ksm07091@gmail.com"
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"scripts": {
|
|
28
28
|
"build": "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun",
|
|
29
29
|
"test": "vitest run",
|
|
30
|
-
"lint": "eslint src --ext .ts"
|
|
30
|
+
"lint": "eslint src --ext .ts",
|
|
31
|
+
"prepublishOnly": "bun build ./src/index.ts --outdir dist --target bun && bun build ./src/cli/index.ts --outdir dist/cli --target bun"
|
|
31
32
|
},
|
|
32
33
|
"files": [
|
|
33
34
|
"dist"
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
"@opencode-ai/plugin": ">=1.0.0"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
|
-
"@ksm0709/context": "
|
|
40
|
+
"@ksm0709/context": "0.0.16",
|
|
40
41
|
"jsonc-parser": "^3.0.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
package/dist/constants.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULTS: {
|
|
2
|
-
readonly configPath: ".opencode/context/config.jsonc";
|
|
3
|
-
readonly promptDir: ".opencode/context/prompts";
|
|
4
|
-
readonly turnStartFile: "turn-start.md";
|
|
5
|
-
readonly turnEndFile: "turn-end.md";
|
|
6
|
-
readonly knowledgeSources: readonly ["AGENTS.md"];
|
|
7
|
-
};
|
|
8
|
-
export declare const LIMITS: {
|
|
9
|
-
readonly maxPromptFileSize: number;
|
|
10
|
-
readonly maxIndexEntries: 100;
|
|
11
|
-
readonly maxTotalInjectionSize: number;
|
|
12
|
-
readonly maxScanDepth: 3;
|
|
13
|
-
readonly maxSummaryLength: 100;
|
|
14
|
-
};
|