@xn-intenton-z2a/agentic-lib 7.1.88 → 7.1.89

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.
@@ -39,6 +39,10 @@ on:
39
39
  type: string
40
40
  required: false
41
41
  default: ""
42
+ profile:
43
+ type: string
44
+ required: false
45
+ default: ""
42
46
  workflow_dispatch:
43
47
  inputs:
44
48
  mode:
@@ -71,6 +75,9 @@ on:
71
75
  - cron-engine
72
76
  - owl-ontology
73
77
  - time-series-lab
78
+ - c64-emulator
79
+ - ray-tracer
80
+ - markdown-compiler
74
81
  - empty
75
82
  mission-text:
76
83
  description: "Freeform mission text for MISSION.md (overrides mission-seed if provided)"
@@ -99,6 +106,16 @@ on:
99
106
  - gpt-5-mini
100
107
  - claude-sonnet-4
101
108
  - gpt-4.1
109
+ profile:
110
+ description: "Tuning profile (leave empty to keep current)"
111
+ type: choice
112
+ required: false
113
+ default: ""
114
+ options:
115
+ - ""
116
+ - min
117
+ - recommended
118
+ - max
102
119
 
103
120
  permissions: write-all
104
121
 
@@ -122,6 +139,8 @@ jobs:
122
139
  echo "schedule=${SCHEDULE}" >> $GITHUB_OUTPUT
123
140
  MODEL='${{ inputs.model }}'
124
141
  echo "model=${MODEL:-gpt-5-mini}" >> $GITHUB_OUTPUT
142
+ PROFILE='${{ inputs.profile }}'
143
+ echo "profile=${PROFILE}" >> $GITHUB_OUTPUT
125
144
  outputs:
126
145
  mode: ${{ steps.normalise.outputs.mode }}
127
146
  dry-run: ${{ steps.normalise.outputs.dry-run }}
@@ -129,6 +148,7 @@ jobs:
129
148
  mission-text: ${{ steps.normalise.outputs.mission-text }}
130
149
  schedule: ${{ steps.normalise.outputs.schedule }}
131
150
  model: ${{ steps.normalise.outputs.model }}
151
+ profile: ${{ steps.normalise.outputs.profile }}
132
152
 
133
153
  init:
134
154
  needs: params
@@ -200,6 +220,33 @@ jobs:
200
220
 
201
221
  - run: npm test
202
222
 
223
+ - name: Update model and profile (if requested)
224
+ if: github.repository != 'xn-intenton-z2a/agentic-lib' && needs.params.outputs.dry-run != 'true' && (needs.params.outputs.model != '' || needs.params.outputs.profile != '')
225
+ uses: actions/github-script@v8
226
+ with:
227
+ script: |
228
+ const fs = require('fs');
229
+ const model = '${{ needs.params.outputs.model }}';
230
+ const profile = '${{ needs.params.outputs.profile }}';
231
+ const tomlPath = 'agentic-lib.toml';
232
+ if (!fs.existsSync(tomlPath)) return;
233
+ let toml = fs.readFileSync(tomlPath, 'utf8');
234
+ if (model) {
235
+ const modelRegex = /(\[tuning\][^\[]*?)(^\s*model\s*=\s*"[^"]*")/m;
236
+ if (modelRegex.test(toml)) {
237
+ toml = toml.replace(modelRegex, `$1model = "${model}"`);
238
+ core.info(`Updated [tuning].model to: ${model}`);
239
+ }
240
+ }
241
+ if (profile) {
242
+ const profileRegex = /(\[tuning\][^\[]*?)(^\s*profile\s*=\s*"[^"]*")/m;
243
+ if (profileRegex.test(toml)) {
244
+ toml = toml.replace(profileRegex, `$1profile = "${profile}"`);
245
+ core.info(`Updated [tuning].profile to: ${profile}`);
246
+ }
247
+ }
248
+ fs.writeFileSync(tomlPath, toml);
249
+
203
250
  - name: Update schedule (if requested)
204
251
  if: github.repository != 'xn-intenton-z2a/agentic-lib' && needs.params.outputs.schedule != '' && needs.params.outputs.dry-run != 'true'
205
252
  uses: actions/github-script@v8
@@ -8,7 +8,7 @@
8
8
  # No trigger changes needed — uses workflow_call and workflow_dispatch only.
9
9
 
10
10
  name: agentic-lib-schedule
11
- run-name: "agentic-lib-schedule -> ${{ inputs.frequency }} (${{ inputs.model }})"
11
+ run-name: "agentic-lib-schedule -> ${{ inputs.frequency }} (${{ inputs.model }}${{ inputs.profile && format(', profile={0}', inputs.profile) || '' }})"
12
12
 
13
13
  on:
14
14
  workflow_call:
@@ -22,6 +22,11 @@ on:
22
22
  required: false
23
23
  type: string
24
24
  default: "gpt-5-mini"
25
+ profile:
26
+ description: "Tuning profile"
27
+ required: false
28
+ type: string
29
+ default: ""
25
30
  dry-run:
26
31
  description: "Skip commit and push"
27
32
  required: false
@@ -48,6 +53,16 @@ on:
48
53
  - gpt-5-mini
49
54
  - claude-sonnet-4
50
55
  - gpt-4.1
56
+ profile:
57
+ description: "Tuning profile"
58
+ required: false
59
+ type: choice
60
+ default: ""
61
+ options:
62
+ - ""
63
+ - min
64
+ - recommended
65
+ - max
51
66
  dry-run:
52
67
  description: "Skip commit and push"
53
68
  type: boolean
@@ -76,6 +91,7 @@ jobs:
76
91
  const fs = require('fs');
77
92
  const frequency = '${{ inputs.frequency }}';
78
93
  const model = '${{ inputs.model || 'gpt-5-mini' }}';
94
+ const profile = '${{ inputs.profile }}';
79
95
  const workflowPath = '.github/workflows/agentic-lib-workflow.yml';
80
96
  const tomlPath = 'agentic-lib.toml';
81
97
 
@@ -139,8 +155,15 @@ jobs:
139
155
  toml = toml.replace(scheduleSupervisorRegex, `$1supervisor = "${frequency}"`);
140
156
  }
141
157
 
158
+ if (profile) {
159
+ const profileRegex = /(\[tuning\][^\[]*?)(^\s*profile\s*=\s*"[^"]*")/m;
160
+ if (profileRegex.test(toml)) {
161
+ toml = toml.replace(profileRegex, `$1profile = "${profile}"`);
162
+ }
163
+ }
164
+
142
165
  fs.writeFileSync(tomlPath, toml);
143
- core.info(`Updated agentic-lib.toml: model=${model}, supervisor=${frequency}`);
166
+ core.info(`Updated agentic-lib.toml: model=${model}, supervisor=${frequency}${profile ? ', profile=' + profile : ''}`);
144
167
  } else {
145
168
  core.warning('agentic-lib.toml not found — skipping config update');
146
169
  }
@@ -24,6 +24,10 @@ on:
24
24
  type: string
25
25
  required: false
26
26
  default: "gpt-5-mini"
27
+ profile:
28
+ type: string
29
+ required: false
30
+ default: ""
27
31
  mode:
28
32
  type: string
29
33
  required: false
@@ -47,6 +51,16 @@ on:
47
51
  - gpt-5-mini
48
52
  - claude-sonnet-4
49
53
  - gpt-4.1
54
+ profile:
55
+ description: "Tuning profile"
56
+ type: choice
57
+ required: false
58
+ default: ""
59
+ options:
60
+ - ""
61
+ - min
62
+ - recommended
63
+ - max
50
64
  mode:
51
65
  description: "Run mode"
52
66
  type: choice
@@ -115,6 +129,8 @@ jobs:
115
129
  run: |
116
130
  MODEL='${{ inputs.model }}'
117
131
  echo "model=${MODEL:-gpt-5-mini}" >> $GITHUB_OUTPUT
132
+ PROFILE='${{ inputs.profile }}'
133
+ echo "profile=${PROFILE}" >> $GITHUB_OUTPUT
118
134
  MODE='${{ inputs.mode }}'
119
135
  echo "mode=${MODE:-full}" >> $GITHUB_OUTPUT
120
136
  echo "message=${{ inputs.message }}" >> $GITHUB_OUTPUT
@@ -137,6 +153,7 @@ jobs:
137
153
  echo "config-path=${CONFIG:-${{ env.configPath }}}" >> $GITHUB_OUTPUT
138
154
  outputs:
139
155
  model: ${{ steps.normalise.outputs.model }}
156
+ profile: ${{ steps.normalise.outputs.profile }}
140
157
  mode: ${{ steps.normalise.outputs.mode }}
141
158
  message: ${{ steps.normalise.outputs.message }}
142
159
  issue-number: ${{ steps.normalise.outputs.issue-number }}
@@ -330,6 +347,23 @@ jobs:
330
347
  working-directory: .github/agentic-lib/actions/agentic-step
331
348
  run: npm ci
332
349
 
350
+ - name: Apply profile and model to config
351
+ if: needs.params.outputs.profile != '' || needs.params.outputs.model != 'gpt-5-mini'
352
+ run: |
353
+ CONFIG="${{ needs.params.outputs.config-path }}"
354
+ PROFILE="${{ needs.params.outputs.profile }}"
355
+ MODEL="${{ needs.params.outputs.model }}"
356
+ if [ -f "$CONFIG" ]; then
357
+ if [ -n "$PROFILE" ]; then
358
+ sed -i "s/^profile = \"[^\"]*\"/profile = \"${PROFILE}\"/" "$CONFIG"
359
+ echo "Updated [tuning].profile to: ${PROFILE}"
360
+ fi
361
+ if [ -n "$MODEL" ] && [ "$MODEL" != "gpt-5-mini" ]; then
362
+ sed -i "s/^model = \"[^\"]*\"/model = \"${MODEL}\"/" "$CONFIG"
363
+ echo "Updated [tuning].model to: ${MODEL}"
364
+ fi
365
+ fi
366
+
333
367
  - name: Load config
334
368
  id: config
335
369
  run: |
@@ -961,6 +995,7 @@ jobs:
961
995
  echo "## agentic-lib-workflow run summary" >> $GITHUB_STEP_SUMMARY
962
996
  echo "- Mode: ${{ needs.params.outputs.mode }}" >> $GITHUB_STEP_SUMMARY
963
997
  echo "- Model: ${{ needs.params.outputs.model }}" >> $GITHUB_STEP_SUMMARY
998
+ echo "- Profile: ${{ needs.params.outputs.profile || '(from config)' }}" >> $GITHUB_STEP_SUMMARY
964
999
  echo "- Dry-run: ${{ needs.params.outputs.dry-run }}" >> $GITHUB_STEP_SUMMARY
965
1000
  echo "- Website: [${SITE_URL}](${SITE_URL})" >> $GITHUB_STEP_SUMMARY
966
1001
 
@@ -972,4 +1007,5 @@ jobs:
972
1007
  with:
973
1008
  frequency: ${{ needs.params.outputs.schedule }}
974
1009
  model: ${{ needs.params.outputs.model }}
1010
+ profile: ${{ needs.params.outputs.profile }}
975
1011
  secrets: inherit
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xn-intenton-z2a/agentic-lib",
3
- "version": "7.1.88",
3
+ "version": "7.1.89",
4
4
  "description": "Agentic-lib Agentic Coding Systems SDK powering automated GitHub workflows.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -0,0 +1,33 @@
1
+ # Mission
2
+
3
+ Build a Markdown-to-HTML compiler library that converts GitHub Flavored Markdown (GFM) to
4
+ semantic HTML.
5
+
6
+ The library should progressively implement parsing and rendering for:
7
+ 1. Headings (h1-h6 via `#` markers) and paragraphs
8
+ 2. Inline formatting: bold (`**`), italic (`*`), code (`` ` ``), strikethrough (`~~`)
9
+ 3. Links `[text](url)` and images `![alt](src)`
10
+ 4. Ordered and unordered lists (including nested lists)
11
+ 5. Code blocks (fenced with ``` and language annotation)
12
+ 6. Blockquotes (nested `>`)
13
+ 7. Tables (GFM pipe syntax with alignment)
14
+ 8. Horizontal rules (`---`, `***`, `___`)
15
+ 9. Task lists (`- [ ]`, `- [x]`)
16
+ 10. Auto-linked URLs and HTML entity escaping
17
+
18
+ ## Technical Requirements
19
+
20
+ - Pure JavaScript, no external Markdown parsing libraries
21
+ - Two-pass architecture: tokeniser/lexer pass, then renderer pass
22
+ - XSS-safe: all user content must be HTML-escaped before insertion
23
+ - Exported as both CommonJS and ESM
24
+
25
+ ## Acceptance Criteria
26
+
27
+ - `compile(markdown)` returns an HTML string
28
+ - `tokenize(markdown)` returns an array of token objects (for inspection/testing)
29
+ - Handles all 10 feature areas listed above
30
+ - Passes a test suite of at least 30 input/output pairs covering edge cases
31
+ - Nested constructs work: bold inside links, links inside lists, code inside blockquotes
32
+ - A sample document is compiled and saved to `docs/examples/sample.html`
33
+ - Output validates as well-formed HTML (no unclosed tags)
@@ -0,0 +1,31 @@
1
+ # Mission
2
+
3
+ Build a ray tracer library that renders 3D scenes to PPM image files.
4
+
5
+ The library should progressively implement:
6
+ 1. Ray-sphere intersection and basic shading
7
+ 2. Multiple objects (spheres, planes) with diffuse lighting
8
+ 3. Shadows and ambient occlusion
9
+ 4. Reflective surfaces with recursive ray bouncing
10
+ 5. Refractive materials (glass, water) with Snell's law
11
+ 6. A scene description format (JSON) for defining cameras, lights, and objects
12
+ 7. Anti-aliasing via supersampling
13
+ 8. Texture mapping (checkerboard, procedural noise)
14
+
15
+ ## Technical Requirements
16
+
17
+ - Pure JavaScript, no native dependencies
18
+ - Output PPM (P3) format — simple text-based image format
19
+ - Vector3 class for all geometric operations
20
+ - Configurable resolution and ray depth
21
+ - Deterministic output (no random sampling unless seeded)
22
+
23
+ ## Acceptance Criteria
24
+
25
+ - `renderScene(scene)` returns a PPM string for a given scene description
26
+ - `parseScene(json)` loads a scene from a JSON string
27
+ - Renders a scene with 3+ spheres, a plane, and a point light in under 10 seconds (640x480)
28
+ - At least one sphere is reflective and one is refractive
29
+ - Unit tests verify ray-sphere intersection, reflection vectors, and Snell's law
30
+ - A sample scene JSON file is included in `docs/examples/`
31
+ - Output PPM can be viewed in any image viewer (validated by checking header format)
@@ -17,7 +17,7 @@
17
17
  "author": "",
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@xn-intenton-z2a/agentic-lib": "^7.1.88"
20
+ "@xn-intenton-z2a/agentic-lib": "^7.1.89"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@playwright/test": "^1.58.0",