@ksm0709/context 0.0.3 → 0.0.5

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.
Files changed (2) hide show
  1. package/dist/index.js +258 -21
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -817,7 +817,8 @@ var DEFAULTS = {
817
817
  turnStartFile: "turn-start.md",
818
818
  turnEndFile: "turn-end.md",
819
819
  knowledgeSources: ["AGENTS.md"],
820
- knowledgeDir: "docs"
820
+ knowledgeDir: "docs",
821
+ templateDir: ".opencode/context/templates"
821
822
  };
822
823
  var LIMITS = {
823
824
  maxPromptFileSize: 64 * 1024,
@@ -970,14 +971,23 @@ var DEFAULT_CONFIG = `{
970
971
  }`;
971
972
  var DEFAULT_TURN_START = `## Knowledge Context
972
973
 
973
- \uC774 \uD504\uB85C\uC81D\uD2B8\uB294 \uC81C\uD154\uCE74\uC2A4\uD150(Zettelkasten) \uBC29\uC2DD\uC73C\uB85C \uC9C0\uC2DD\uC744 \uAD00\uB9AC\uD558\uC5EC \uC791\uC5C5 \uAC04 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBCF4\uC874\uD569\uB2C8\uB2E4.
974
+ \uC774 \uD504\uB85C\uC81D\uD2B8\uB294 **\uC81C\uD154\uCE74\uC2A4\uD150(Zettelkasten)** \uBC29\uC2DD\uC73C\uB85C \uC9C0\uC2DD\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4.
975
+ \uC138\uC158 \uAC04 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBCF4\uC874\uD558\uC5EC, \uC774\uC804 \uC138\uC158\uC758 \uACB0\uC815/\uD328\uD134/\uC2E4\uC218\uAC00 \uB2E4\uC74C \uC138\uC158\uC5D0\uC11C \uC7AC\uD65C\uC6A9\uB429\uB2C8\uB2E4.
976
+
977
+ ### \uC81C\uD154\uCE74\uC2A4\uD150 \uD575\uC2EC \uC6D0\uCE59
978
+
979
+ 1. **\uC6D0\uC790\uC131** -- \uD558\uB098\uC758 \uB178\uD2B8 = \uD558\uB098\uC758 \uC8FC\uC81C. \uC5EC\uB7EC \uC8FC\uC81C\uB97C \uC11E\uC9C0 \uB9C8\uC138\uC694.
980
+ 2. **\uC5F0\uACB0** -- \uBAA8\uB4E0 \uB178\uD2B8\uB294 [[wikilink]]\uB85C \uAD00\uB828 \uB178\uD2B8\uC5D0 \uC5F0\uACB0. \uACE0\uB9BD\uB41C \uB178\uD2B8\uB294 \uBC1C\uACAC\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
981
+ 3. **\uC790\uAE30 \uC5B8\uC5B4** -- \uBCF5\uC0AC-\uBD99\uC5EC\uB123\uAE30\uAC00 \uC544\uB2CC, \uD575\uC2EC\uC744 \uC774\uD574\uD558\uACE0 \uAC04\uACB0\uD558\uAC8C \uC11C\uC220\uD558\uC138\uC694.
974
982
 
975
983
  ### \uC791\uC5C5 \uC804 \uD544\uC218
976
- - \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
984
+
985
+ - \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
986
+ - \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
977
987
  - \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
978
- - \uBB38\uC11C \uB0B4 [[\uB9C1\uD06C]]\uB97C \uB530\uB77C\uAC00\uBA70 \uAD00\uB828 \uB178\uD2B8\uB97C \uD0D0\uC0C9\uD558\uC138\uC694 \u2014 \uB9C1\uD06C\uB97C \uB193\uCE58\uBA74 \uC911\uC694\uD55C \uB9E5\uB77D\uC744 \uC783\uC2B5\uB2C8\uB2E4
979
988
 
980
989
  ### \uC6B0\uC120\uC21C\uC704
990
+
981
991
  - AGENTS.md\uC758 \uC9C0\uC2DC\uC0AC\uD56D\uC774 \uD56D\uC0C1 \uCD5C\uC6B0\uC120
982
992
  - \uC9C0\uC2DD \uB178\uD2B8\uC758 \uACB0\uC815\uC0AC\uD56D > \uC77C\uBC18\uC801 \uAD00\uD589
983
993
  - \uC9C0\uC2DD \uB178\uD2B8\uC5D0 \uC5C6\uB294 \uC0C8\uB85C\uC6B4 \uACB0\uC815\uC740 \uC791\uC5C5 \uC644\uB8CC \uC2DC \uAE30\uB85D\uD558\uC138\uC694
@@ -987,19 +997,239 @@ var DEFAULT_TURN_END = `## \uC791\uC5C5 \uB9C8\uBB34\uB9AC \uCCB4\uD06C\uB9AC\uC
987
997
  \uC791\uC5C5\uC744 \uC644\uB8CC\uD558\uAE30 \uC804\uC5D0 \uBC18\uB4DC\uC2DC:
988
998
 
989
999
  ### \uD004\uB9AC\uD2F0 \uBCF4\uC7A5
1000
+
990
1001
  - [ ] \uBCC0\uACBD\uD55C \uCF54\uB4DC\uC5D0 \uB300\uD574 lint \uC2E4\uD589
991
1002
  - [ ] \uD0C0\uC785 \uC5D0\uB7EC \uD655\uC778
992
1003
  - [ ] \uAE30\uC874 \uD14C\uC2A4\uD2B8 \uD1B5\uACFC \uD655\uC778
993
1004
 
994
1005
  ### \uC9C0\uC2DD \uC815\uB9AC (Zettelkasten)
995
- - [ ] \uC0C8\uB85C\uC6B4 \uACB0\uC815/\uD328\uD134/\uAC1C\uB150\uC744 \uBC1C\uACAC\uD558\uBA74 **\uC6D0\uC790\uC801 \uB178\uD2B8**(\uD558\uB098\uC758 \uB178\uD2B8 = \uD558\uB098\uC758 \uC8FC\uC81C)\uB85C \uC791\uC131
996
- - [ ] \uAD00\uB828 \uAE30\uC874 \uB178\uD2B8\uC5D0 [[\uB9C1\uD06C]]\uB97C \uCD94\uAC00\uD558\uC5EC \uC5F0\uACB0 \u2014 \uACE0\uB9BD\uB41C \uB178\uD2B8\uB294 \uAC00\uCE58\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4
997
- - [ ] \uAE30\uC874 \uB178\uD2B8\uC758 \uB0B4\uC6A9\uC774 \uBCC0\uACBD\uC0AC\uD56D\uACFC \uBD88\uC77C\uCE58\uD558\uBA74 \uC5C5\uB370\uC774\uD2B8
998
- - [ ] \uB178\uD2B8 \uC791\uC131 \uADDC\uCE59:
999
- - \uCCAB \uC904: \uBA85\uD655\uD55C \uC81C\uBAA9 (# Title)
1000
- - \uD575\uC2EC \uB0B4\uC6A9\uC744 \uC790\uC2E0\uC758 \uC5B8\uC5B4\uB85C \uAC04\uACB0\uD558\uAC8C \uC11C\uC220
1001
- - \uAD00\uB828 \uB178\uD2B8\uB97C [[wikilink]]\uB85C \uC5F0\uACB0
1006
+
1007
+ \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.
1008
+
1009
+ | \uC0C1\uD669 | \uD15C\uD50C\uB9BF | \uD30C\uC77C\uBA85 \uD328\uD134 |
1010
+ | ------------------------------- | --------------------------------------------------- | --------------------------- |
1011
+ | \uC544\uD0A4\uD14D\uCC98/\uAE30\uC220 \uC2A4\uD0DD \uC911\uB300 \uACB0\uC815 | [ADR](.opencode/context/templates/adr.md) | \`adr-NNN-\uC81C\uBAA9.md\` |
1012
+ | \uBC18\uBCF5 \uC0AC\uC6A9\uD560 \uCF54\uB4DC \uD328\uD134 \uBC1C\uACAC | [Pattern](.opencode/context/templates/pattern.md) | \`pattern-\uC81C\uBAA9.md\` |
1013
+ | \uBE44\uC790\uBA85\uD55C \uBC84\uADF8 \uD574\uACB0 | [Bug](.opencode/context/templates/bug.md) | \`bug-\uC81C\uBAA9.md\` |
1014
+ | \uC678\uBD80 API/\uB77C\uC774\uBE0C\uB7EC\uB9AC \uC608\uC0C1\uC678 \uB3D9\uC791 | [Gotcha](.opencode/context/templates/gotcha.md) | \`gotcha-\uB77C\uC774\uBE0C\uB7EC\uB9AC-\uC81C\uBAA9.md\` |
1015
+ | \uC791\uC740 \uAE30\uC220\uC801 \uC120\uD0DD | [Decision](.opencode/context/templates/decision.md) | \`decision-\uC81C\uBAA9.md\` |
1016
+ | \uBAA8\uB4C8/\uD504\uB85C\uC81D\uD2B8 \uAC1C\uC694 \uD544\uC694 | [Context](.opencode/context/templates/context.md) | \`context-\uC81C\uBAA9.md\` |
1017
+ | \uBC18\uBCF5 \uAC00\uB2A5\uD55C \uD504\uB85C\uC138\uC2A4 \uC815\uB9BD | [Runbook](.opencode/context/templates/runbook.md) | \`runbook-\uC81C\uBAA9.md\` |
1018
+ | \uC2E4\uD5D8/\uB514\uBC84\uAE45 \uC911 \uD559\uC2B5 | [Insight](.opencode/context/templates/insight.md) | \`insight-\uC81C\uBAA9.md\` |
1019
+
1020
+ - [ ] \uC704 \uC0C1\uD669\uC5D0 \uD574\uB2F9\uD558\uB294 \uBC1C\uACAC\uC774 \uC788\uC5C8\uB2E4\uBA74 \uB178\uD2B8\uB97C \uC791\uC131\uD588\uB294\uAC00?
1021
+ - [ ] \uAD00\uB828 \uAE30\uC874 \uB178\uD2B8\uC5D0 [[\uB9C1\uD06C]]\uB97C \uCD94\uAC00\uD588\uB294\uAC00?
1022
+ - [ ] \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?
1023
+
1024
+ #### \uB178\uD2B8 \uC791\uC131 \uADDC\uCE59
1025
+
1026
+ - \uCCAB \uC904: \uBA85\uD655\uD55C \uC81C\uBAA9 (\`# Title\`)
1027
+ - \uD575\uC2EC \uB0B4\uC6A9\uC744 \uC790\uC2E0\uC758 \uC5B8\uC5B4\uB85C \uAC04\uACB0\uD558\uAC8C \uC11C\uC220
1028
+ - \uAD00\uB828 \uB178\uD2B8\uB97C \`[[relative/path/file.md]]\` \uD615\uD0DC\uC758 wikilink\uB85C \uC5F0\uACB0
1029
+ - knowledge \uB514\uB809\uD1A0\uB9AC (\uAE30\uBCF8: \`docs/\`)\uC5D0 \uC800\uC7A5
1030
+ `;
1031
+ var DEFAULT_ADR_TEMPLATE = `# ADR-NNN: [\uC81C\uBAA9]
1032
+
1033
+ ## \uC0C1\uD0DC
1034
+
1035
+ Accepted | Deprecated | Superseded by [[ADR-YYY]]
1036
+
1037
+ ## \uB9E5\uB77D
1038
+
1039
+ \uC774 \uACB0\uC815\uC744 \uB0B4\uB9AC\uAC8C \uB41C \uBC30\uACBD/\uBB38\uC81C \uC0C1\uD669
1040
+
1041
+ ## \uACB0\uC815
1042
+
1043
+ \uBB34\uC5C7\uC744 \uC5B4\uB5BB\uAC8C \uD558\uAE30\uB85C \uD588\uB294\uC9C0
1044
+
1045
+ ## \uACB0\uACFC
1046
+
1047
+ ### \uAE0D\uC815\uC801
1048
+
1049
+ - ...
1050
+
1051
+ ### \uBD80\uC815\uC801 (\uD2B8\uB808\uC774\uB4DC\uC624\uD504)
1052
+
1053
+ - ...
1054
+
1055
+ ## \uAD00\uB828 \uB178\uD2B8
1056
+
1057
+ - [[\uAD00\uB828-\uACB0\uC815.md]] / [[\uAD00\uB828-\uD328\uD134.md]]
1058
+ `;
1059
+ var DEFAULT_PATTERN_TEMPLATE = `# Pattern: [\uD328\uD134 \uC774\uB984]
1060
+
1061
+ ## \uBB38\uC81C
1062
+
1063
+ \uC774 \uD328\uD134\uC774 \uD574\uACB0\uD558\uB294 \uBB38\uC81C
1064
+
1065
+ ## \uD574\uBC95
1066
+
1067
+ // \uD328\uD134\uC758 \uB300\uD45C\uC801 \uC608\uC2DC \uCF54\uB4DC
1068
+
1069
+ ## \uC0AC\uC6A9 \uC2DC\uC810
1070
+
1071
+ - \uC774\uB7F4 \uB54C \uC0AC\uC6A9
1072
+
1073
+ ## \uC0AC\uC6A9\uD558\uC9C0 \uB9D0 \uAC83
1074
+
1075
+ - \uC774\uB7F4 \uB54C\uB294 \uC0AC\uC6A9 \uAE08\uC9C0 (\uC548\uD2F0\uD328\uD134 \uACBD\uACE0)
1076
+
1077
+ ## \uCF54\uB4DC\uBCA0\uC774\uC2A4 \uB0B4 \uC608\uC2DC
1078
+
1079
+ - [[\uACBD\uB85C/\uD30C\uC77C.ts]] -- \uC2E4\uC81C \uC801\uC6A9 \uC0AC\uB840
1080
+
1081
+ ## \uAD00\uB828 \uD328\uD134
1082
+
1083
+ - [[\uB300\uC548-\uD328\uD134.md]] / [[\uBCF4\uC644-\uD328\uD134.md]]
1084
+ `;
1085
+ var DEFAULT_BUG_TEMPLATE = `# Bug: [\uAC04\uB2E8\uD55C \uC124\uBA85]
1086
+
1087
+ ## \uC99D\uC0C1
1088
+
1089
+ - \uC5D0\uB7EC \uBA54\uC2DC\uC9C0: \`...\`
1090
+ - \uAD00\uCC30\uB41C \uB3D9\uC791: ...
1091
+
1092
+ ## \uC6D0\uC778
1093
+
1094
+ \uC2E4\uC81C \uC6D0\uC778 \uBD84\uC11D
1095
+
1096
+ ## \uD574\uACB0
1097
+
1098
+ // \uC218\uC815 \uCF54\uB4DC
1099
+
1100
+ ## \uC608\uBC29
1101
+
1102
+ \uD5A5\uD6C4 \uAC19\uC740 \uBB38\uC81C\uB97C \uBC29\uC9C0\uD558\uB294 \uBC29\uBC95
1103
+
1104
+ ## \uAD00\uB828 \uB178\uD2B8
1105
+
1106
+ - [[\uC720\uC0AC-\uBC84\uADF8.md]] / [[\uC608\uBC29-\uD328\uD134.md]]
1107
+ `;
1108
+ var DEFAULT_GOTCHA_TEMPLATE = `# Gotcha: [\uB77C\uC774\uBE0C\uB7EC\uB9AC] -- [\uD568\uC815 \uC124\uBA85]
1109
+
1110
+ ## \uC608\uC0C1 vs \uC2E4\uC81C
1111
+
1112
+ \uC608\uC0C1\uD55C \uB3D9\uC791\uACFC \uC2E4\uC81C \uB3D9\uC791\uC758 \uCC28\uC774
1113
+
1114
+ ## \uC6B0\uD68C\uBC95
1115
+
1116
+ // \uC791\uB3D9\uD558\uB294 \uD574\uACB0 \uCF54\uB4DC
1117
+
1118
+ ## \uC6D0\uC778 (\uC54C\uB824\uC9C4 \uACBD\uC6B0)
1119
+
1120
+ \uC65C \uC774\uB807\uAC8C \uB3D9\uC791\uD558\uB294\uC9C0
1121
+
1122
+ ## \uAD00\uB828
1123
+
1124
+ - \uC774\uC288: [GitHub issue / \uBB38\uC11C \uB9C1\uD06C]
1125
+ - [[\uAD00\uB828-gotcha.md]]
1002
1126
  `;
1127
+ var DEFAULT_DECISION_TEMPLATE = `# Decision: [\uC81C\uBAA9]
1128
+
1129
+ ## \uACB0\uC815
1130
+
1131
+ \uBB34\uC5C7\uC744 \uC120\uD0DD\uD588\uB294\uC9C0
1132
+
1133
+ ## \uADFC\uAC70
1134
+
1135
+ \uC65C \uC774\uAC83\uC744 \uC120\uD0DD\uD588\uB294\uC9C0
1136
+
1137
+ ## \uACE0\uB824\uD55C \uB300\uC548
1138
+
1139
+ - \uB300\uC548 1: \uD0C8\uB77D \uC774\uC720
1140
+ - \uB300\uC548 2: \uD0C8\uB77D \uC774\uC720
1141
+
1142
+ ## \uAD00\uB828 \uB178\uD2B8
1143
+
1144
+ - [[\uAD00\uB828-ADR.md]] / [[\uAD00\uB828-\uD328\uD134.md]]
1145
+ `;
1146
+ var DEFAULT_CONTEXT_TEMPLATE = `# Context: [\uD504\uB85C\uC81D\uD2B8/\uBAA8\uB4C8\uBA85]
1147
+
1148
+ ## \uAC1C\uC694
1149
+
1150
+ \uBB34\uC5C7\uC774\uACE0 \uBB34\uC5C7\uC744 \uD558\uB294\uC9C0
1151
+
1152
+ ## \uAE30\uC220 \uC2A4\uD0DD
1153
+
1154
+ - \uC5B8\uC5B4 / \uD504\uB808\uC784\uC6CC\uD06C / \uC8FC\uC694 \uB77C\uC774\uBE0C\uB7EC\uB9AC
1155
+
1156
+ ## \uC544\uD0A4\uD14D\uCC98
1157
+
1158
+ \uACE0\uC218\uC900 \uAD6C\uC870\uC640 \uD328\uD134
1159
+
1160
+ ## \uCEE8\uBCA4\uC158
1161
+
1162
+ - \uD30C\uC77C \uAD6C\uC870 / \uB124\uC774\uBC0D / \uD14C\uC2A4\uD2B8 \uBC29\uC2DD
1163
+
1164
+ ## \uC9C4\uC785\uC810
1165
+
1166
+ - [[src/index.ts]] / [[config.json]]
1167
+
1168
+ ## \uAD00\uB828 \uB178\uD2B8
1169
+
1170
+ - [[\uAD00\uB828-context.md]] / [[\uC8FC\uC694-ADR.md]]
1171
+ `;
1172
+ var DEFAULT_RUNBOOK_TEMPLATE = `# Runbook: [\uC808\uCC28 \uC774\uB984]
1173
+
1174
+ ## \uBAA9\uC801
1175
+
1176
+ \uC774 \uC808\uCC28\uAC00 \uB2EC\uC131\uD558\uB294 \uAC83
1177
+
1178
+ ## \uC0AC\uC804 \uC870\uAC74
1179
+
1180
+ - \uD544\uC694\uD55C \uAC83 1
1181
+
1182
+ ## \uB2E8\uACC4
1183
+
1184
+ 1. \uCCAB \uBC88\uC9F8 \uB2E8\uACC4
1185
+ 2. \uB450 \uBC88\uC9F8 \uB2E8\uACC4
1186
+
1187
+ ## \uD655\uC778 \uBC29\uBC95
1188
+
1189
+ \uC131\uACF5\uD588\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uBC29\uBC95
1190
+
1191
+ ## \uBB38\uC81C \uD574\uACB0
1192
+
1193
+ | \uC99D\uC0C1 | \uD574\uACB0 |
1194
+ | ------ | --------------- |
1195
+ | \uC774\uC288 1 | [[\uAD00\uB828-bug.md]] |
1196
+
1197
+ ## \uAD00\uB828 \uB178\uD2B8
1198
+
1199
+ - [[\uAD00\uB828-runbook.md]] / [[\uAD00\uB828-context.md]]
1200
+ `;
1201
+ var DEFAULT_INSIGHT_TEMPLATE = `# Insight: [\uBC1C\uACAC \uC81C\uBAA9]
1202
+
1203
+ ## \uBC1C\uACAC
1204
+
1205
+ \uBB34\uC5C7\uC744 \uC54C\uAC8C \uB418\uC5C8\uB294\uC9C0
1206
+
1207
+ ## \uB9E5\uB77D
1208
+
1209
+ \uC5B4\uB5BB\uAC8C \uBC1C\uACAC\uD588\uB294\uC9C0 (\uC5B4\uB5A4 \uC791\uC5C5 \uC911, \uC5B4\uB5A4 \uC2E4\uD5D8)
1210
+
1211
+ ## \uC2DC\uC0AC\uC810
1212
+
1213
+ \uC774\uAC83\uC774 \uD5A5\uD6C4 \uC791\uC5C5\uC5D0 \uBBF8\uCE58\uB294 \uC601\uD5A5
1214
+
1215
+ ## \uC801\uC6A9
1216
+
1217
+ \uC774 \uBC1C\uACAC\uC744 \uBC14\uD0D5\uC73C\uB85C \uC5B4\uB5BB\uAC8C \uD589\uB3D9\uC744 \uBC14\uAFD4\uC57C \uD558\uB294\uC9C0
1218
+
1219
+ ## \uAD00\uB828 \uB178\uD2B8
1220
+
1221
+ - [[\uAD00\uB828-insight.md]] / [[\uC601\uD5A5\uBC1B\uB294-\uD328\uD134.md]] / [[\uAD00\uB828-ADR.md]]
1222
+ `;
1223
+ var TEMPLATE_FILES = {
1224
+ "adr.md": DEFAULT_ADR_TEMPLATE,
1225
+ "pattern.md": DEFAULT_PATTERN_TEMPLATE,
1226
+ "bug.md": DEFAULT_BUG_TEMPLATE,
1227
+ "gotcha.md": DEFAULT_GOTCHA_TEMPLATE,
1228
+ "decision.md": DEFAULT_DECISION_TEMPLATE,
1229
+ "context.md": DEFAULT_CONTEXT_TEMPLATE,
1230
+ "runbook.md": DEFAULT_RUNBOOK_TEMPLATE,
1231
+ "insight.md": DEFAULT_INSIGHT_TEMPLATE
1232
+ };
1003
1233
  function scaffoldIfNeeded(projectDir) {
1004
1234
  const contextDir = join3(projectDir, ".opencode", "context");
1005
1235
  if (existsSync2(contextDir)) {
@@ -1008,9 +1238,14 @@ function scaffoldIfNeeded(projectDir) {
1008
1238
  try {
1009
1239
  const promptsDir = join3(contextDir, "prompts");
1010
1240
  mkdirSync(promptsDir, { recursive: true });
1241
+ const templatesDir = join3(contextDir, "templates");
1242
+ mkdirSync(templatesDir, { recursive: true });
1011
1243
  writeFileSync(join3(contextDir, "config.jsonc"), DEFAULT_CONFIG, "utf-8");
1012
1244
  writeFileSync(join3(promptsDir, DEFAULTS.turnStartFile), DEFAULT_TURN_START, "utf-8");
1013
1245
  writeFileSync(join3(promptsDir, DEFAULTS.turnEndFile), DEFAULT_TURN_END, "utf-8");
1246
+ for (const [filename, content] of Object.entries(TEMPLATE_FILES)) {
1247
+ writeFileSync(join3(templatesDir, filename), content, "utf-8");
1248
+ }
1014
1249
  return true;
1015
1250
  } catch {
1016
1251
  return false;
@@ -1019,10 +1254,13 @@ function scaffoldIfNeeded(projectDir) {
1019
1254
  function updateScaffold(projectDir) {
1020
1255
  const contextDir = join3(projectDir, ".opencode", "context");
1021
1256
  mkdirSync(join3(contextDir, "prompts"), { recursive: true });
1257
+ mkdirSync(join3(contextDir, "templates"), { recursive: true });
1258
+ const templateEntries = Object.fromEntries(Object.entries(TEMPLATE_FILES).map(([filename, content]) => [`templates/${filename}`, content]));
1022
1259
  const templates = {
1023
1260
  "config.jsonc": DEFAULT_CONFIG,
1024
1261
  [`prompts/${DEFAULTS.turnStartFile}`]: DEFAULT_TURN_START,
1025
- [`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END
1262
+ [`prompts/${DEFAULTS.turnEndFile}`]: DEFAULT_TURN_END,
1263
+ ...templateEntries
1026
1264
  };
1027
1265
  const updated = [];
1028
1266
  for (const [path, content] of Object.entries(templates)) {
@@ -1072,13 +1310,6 @@ var plugin = async ({ directory, client }) => {
1072
1310
  ${lines}` }];
1073
1311
  }
1074
1312
  },
1075
- "experimental.chat.system.transform": async (_input, output) => {
1076
- const knowledgeSources = [config.knowledge.dir, ...config.knowledge.sources].filter((s) => Boolean(s));
1077
- const entries = buildKnowledgeIndex(directory, knowledgeSources);
1078
- const indexContent = formatKnowledgeIndex(entries);
1079
- if (indexContent)
1080
- output.system.push(indexContent);
1081
- },
1082
1313
  "experimental.chat.messages.transform": async (_input, output) => {
1083
1314
  if (output.messages.length === 0)
1084
1315
  return;
@@ -1087,13 +1318,19 @@ ${lines}` }];
1087
1318
  return;
1088
1319
  const turnStartPath = join4(directory, config.prompts.turnStart ?? join4(DEFAULTS.promptDir, DEFAULTS.turnStartFile));
1089
1320
  const turnStart = readPromptFile(turnStartPath);
1090
- if (turnStart) {
1321
+ const knowledgeSources = [config.knowledge.dir, ...config.knowledge.sources].filter((s) => Boolean(s));
1322
+ const entries = buildKnowledgeIndex(directory, knowledgeSources);
1323
+ const indexContent = formatKnowledgeIndex(entries);
1324
+ const combinedContent = [turnStart, indexContent].filter(Boolean).join(`
1325
+
1326
+ `);
1327
+ if (combinedContent) {
1091
1328
  lastUserMsg.parts.push({
1092
1329
  id: `context-turn-start-${Date.now()}`,
1093
1330
  sessionID: lastUserMsg.info.sessionID,
1094
1331
  messageID: lastUserMsg.info.id,
1095
1332
  type: "text",
1096
- text: turnStart
1333
+ text: combinedContent
1097
1334
  });
1098
1335
  }
1099
1336
  const turnEndPath = join4(directory, config.prompts.turnEnd ?? join4(DEFAULTS.promptDir, DEFAULTS.turnEndFile));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ksm0709/context",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "Intent tools for Bun",
5
5
  "author": {
6
6
  "name": "TaehoKang",