@context-forge/core 0.6.40 → 0.6.41

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.
@@ -3,9 +3,7 @@
3
3
  * Profiles declare which artifact variables each instruction type uses,
4
4
  * enabling profile-aware filtering in ContextIntegrator.
5
5
  */
6
- export type ProfileMap = Record<string, {
7
- variables: string[];
8
- }>;
6
+ export type ProfileMap = Record<string, string[]>;
9
7
  export declare class ContextProfileParser {
10
8
  /**
11
9
  * Finds and parses the context-profiles YAML block from file content.
@@ -1 +1 @@
1
- {"version":3,"file":"ContextProfileParser.d.ts","sourceRoot":"","sources":["../../src/services/ContextProfileParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC;AAwFjE,qBAAa,oBAAoB;IAC/B;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAyB9C;;;;;OAKG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,EAAE;IAgB7E,OAAO,CAAC,oBAAoB;CAI7B"}
1
+ {"version":3,"file":"ContextProfileParser.d.ts","sourceRoot":"","sources":["../../src/services/ContextProfileParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAuHlD,qBAAa,oBAAoB;IAC/B;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAyB9C;;;;;OAKG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,EAAE;IAgB7E,OAAO,CAAC,oBAAoB;CAI7B"}
@@ -5,38 +5,67 @@
5
5
  */
6
6
  /** Key identifying the context-profiles block; works with any yaml fence annotation */
7
7
  const PROFILE_KEY = 'context_profiles:\n';
8
+ /** Matches a bracket-delimited list: [a, b, c] or [] */
9
+ const BRACKET_LIST = /\[([^\]]*)\]/;
8
10
  /**
9
- * Inline YAML parser for the flat context-profiles block.
10
- * Handles the structure:
11
- * context-profiles:
12
- * profile-name:
13
- * variables: [field1, field2, ...]
11
+ * Parses the context_profiles YAML block into a ProfileMap.
12
+ *
13
+ * Handles two layout styles without relying on indent depth:
14
+ *
15
+ * Compact (one-liner):
16
+ * profile-name: [var1, var2]
17
+ *
18
+ * Expanded (two-liner):
19
+ * profile-name:
20
+ * variables: [var1, var2]
21
+ *
22
+ * The parser uses a simple state machine: when it sees a line with a
23
+ * key (word-chars + hyphens) followed by a colon, it checks whether
24
+ * the same line also contains a bracket list. If so, that's a compact
25
+ * profile. If not, it remembers the key and looks for a bracket list
26
+ * on a subsequent indented line.
14
27
  */
15
28
  function parseProfilesYaml(yaml) {
16
29
  const result = {};
17
30
  const lines = yaml.split('\n');
18
- let currentProfile = null;
31
+ // Pending profile name from a multi-line entry (e.g. " profile-name:")
32
+ let pendingProfile = null;
19
33
  for (const rawLine of lines) {
20
34
  const line = rawLine.trimEnd();
21
- // Top-level key: context_profiles or context-profiles (skip)
22
- if (line === 'context_profiles:' || line === 'context-profiles:')
35
+ // Skip the top-level header key
36
+ if (/^\s*context[_-]profiles:\s*$/.test(line))
23
37
  continue;
24
- // Profile name (2-space indent, ends with colon)
25
- const profileMatch = line.match(/^ ([\w-]+):$/);
26
- if (profileMatch) {
27
- currentProfile = profileMatch[1];
28
- result[currentProfile] = { variables: [] };
38
+ // Skip blank lines
39
+ if (line.trim() === '')
29
40
  continue;
30
- }
31
- // Variables line (4-space indent, bracket list)
32
- if (currentProfile) {
33
- const varsMatch = line.match(/^ variables:\s*\[([^\]]*)\]/);
34
- if (varsMatch) {
35
- const vars = varsMatch[1]
36
- .split(',')
37
- .map((v) => v.trim())
38
- .filter(Boolean);
39
- result[currentProfile].variables = vars;
41
+ // Try to extract a key (word-chars/hyphens after leading whitespace, before colon)
42
+ const keyMatch = line.match(/^\s+([\w-]+):\s*(.*)/);
43
+ if (keyMatch) {
44
+ const key = keyMatch[1];
45
+ const rest = keyMatch[2];
46
+ // Does this line also have a bracket list?
47
+ const listMatch = rest.match(BRACKET_LIST);
48
+ if (listMatch) {
49
+ // Compact format OR expanded "variables: [...]" line
50
+ const vars = listMatch[1].split(',').map((v) => v.trim()).filter(Boolean);
51
+ if (key === 'variables' && pendingProfile) {
52
+ // Expanded: assign to the pending profile
53
+ result[pendingProfile] = vars;
54
+ pendingProfile = null;
55
+ }
56
+ else if (key !== 'variables') {
57
+ // Compact: key IS the profile name
58
+ result[key] = vars;
59
+ pendingProfile = null;
60
+ }
61
+ }
62
+ else {
63
+ // No bracket list — this is a multi-line profile header
64
+ // (ignore 'variables' without a list, which shouldn't happen)
65
+ if (key !== 'variables') {
66
+ pendingProfile = key;
67
+ result[key] = [];
68
+ }
40
69
  }
41
70
  }
42
71
  }
@@ -103,7 +132,7 @@ export class ContextProfileParser {
103
132
  const yamlContent = fileContent.slice(contentStart, fenceEnd);
104
133
  const parsed = parseProfilesYaml(yamlContent);
105
134
  // Validate: must have at least one profile with variables
106
- const hasProfiles = Object.values(parsed).some((p) => p.variables.length > 0);
135
+ const hasProfiles = Object.values(parsed).some((vars) => vars.length > 0);
107
136
  return hasProfiles ? parsed : {};
108
137
  }
109
138
  catch {
@@ -121,10 +150,10 @@ export class ContextProfileParser {
121
150
  return [];
122
151
  const normalised = this.normaliseInstruction(instruction);
123
152
  if (profiles[normalised]) {
124
- return profiles[normalised].variables;
153
+ return profiles[normalised];
125
154
  }
126
155
  if (profiles['_default']) {
127
- return profiles['_default'].variables;
156
+ return profiles['_default'];
128
157
  }
129
158
  return [];
130
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContextProfileParser.js","sourceRoot":"","sources":["../../src/services/ContextProfileParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,uFAAuF;AACvF,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,cAAc,GAAkB,IAAI,CAAC;IAEzC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAE/B,6DAA6D;QAC7D,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,mBAAmB;YAAE,SAAS;QAE3E,iDAAiD;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,YAAY,EAAE,CAAC;YACjB,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,gDAAgD;QAChD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC/D,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;qBACtB,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,yBAAyB,GAA2B;IACxD,iCAAiC;IACjC,kBAAkB,EAAE,iBAAiB;IACrC,0BAA0B,EAAE,yBAAyB;IACrD,uBAAuB,EAAE,sBAAsB;IAC/C,yBAAyB,EAAE,wBAAwB;IACnD,uBAAuB,EAAE,sBAAsB;IAC/C,yBAAyB,EAAE,wBAAwB;IACnD,yBAAyB,EAAE,wBAAwB;IACnD,sBAAsB,EAAE,2BAA2B;IACnD,kDAAkD;IAClD,kBAAkB,EAAE,iBAAiB;IACrC,4BAA4B;IAC5B,kBAAkB,EAAE,kBAAkB;IACtC,6BAA6B,EAAE,qBAAqB;IACpD,qBAAqB,EAAE,qBAAqB;IAC5C,mBAAmB;IACnB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,2BAA2B;IAChC,uBAAuB;IACvB,SAAS,EAAE,iBAAiB;IAC5B,iBAAiB,EAAE,yBAAyB;IAC5C,cAAc,EAAE,sBAAsB;IACtC,gBAAgB,EAAE,wBAAwB;IAC1C,cAAc,EAAE,sBAAsB;IACtC,gBAAgB,EAAE,wBAAwB;IAC1C,gBAAgB,EAAE,wBAAwB;IAC1C,aAAa,EAAE,2BAA2B;CAC3C,CAAC;AAEF,MAAM,OAAO,oBAAoB;IAC/B;;;OAGG;IACH,aAAa,CAAC,WAAmB;QAC/B,IAAI,CAAC;YACH,sDAAsD;YACtD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE/B,iCAAiC;YACjC,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9D,IAAI,UAAU,KAAK,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEjC,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE/B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAE9C,0DAA0D;YAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9E,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,WAAmB,EAAE,QAAoB;QAChE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,oBAAoB,CAAC,WAAmB;QAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,yBAAyB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"ContextProfileParser.js","sourceRoot":"","sources":["../../src/services/ContextProfileParser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-forge/core",
3
- "version": "0.6.40",
3
+ "version": "0.6.41",
4
4
  "description": "Core context generation engine for Context Forge — template processing, project state, prompt assembly",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",