@xn-intenton-z2a/agentic-lib 7.4.14 → 7.4.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.
Files changed (55) hide show
  1. package/.github/agents/agent-apply-fix.md +30 -1
  2. package/.github/agents/agent-director.md +28 -7
  3. package/.github/agents/agent-discussion-bot.md +28 -0
  4. package/.github/agents/agent-implementation-review.md +21 -0
  5. package/.github/agents/agent-issue-resolution.md +32 -0
  6. package/.github/agents/agent-iterate.md +33 -0
  7. package/.github/agents/agent-maintain-features.md +34 -0
  8. package/.github/agents/agent-maintain-library.md +39 -0
  9. package/.github/agents/agent-ready-issue.md +21 -0
  10. package/.github/agents/agent-review-issue.md +16 -0
  11. package/.github/agents/agent-supervisor.md +60 -0
  12. package/.github/workflows/agentic-lib-init.yml +76 -11
  13. package/.github/workflows/agentic-lib-schedule.yml +58 -6
  14. package/.github/workflows/agentic-lib-test.yml +31 -3
  15. package/.github/workflows/agentic-lib-update.yml +20 -0
  16. package/.github/workflows/agentic-lib-workflow.yml +42 -7
  17. package/README.md +23 -12
  18. package/agentic-lib.toml +2 -2
  19. package/bin/agentic-lib.js +34 -4
  20. package/package.json +1 -1
  21. package/src/actions/agentic-step/index.js +35 -10
  22. package/src/actions/agentic-step/logging.js +5 -2
  23. package/src/actions/agentic-step/tasks/direct.js +50 -16
  24. package/src/actions/agentic-step/tasks/maintain-features.js +7 -0
  25. package/src/actions/agentic-step/tasks/maintain-library.js +10 -0
  26. package/src/actions/agentic-step/tasks/transform.js +37 -1
  27. package/src/actions/commit-if-changed/action.yml +2 -1
  28. package/src/copilot/config.js +2 -2
  29. package/src/copilot/github-tools.js +8 -2
  30. package/src/copilot/guards.js +4 -10
  31. package/src/copilot/state.js +214 -0
  32. package/src/copilot/telemetry.js +92 -10
  33. package/src/seeds/missions/1-dan-create-c64-emulator.md +13 -13
  34. package/src/seeds/missions/1-dan-create-planning-engine.md +82 -0
  35. package/src/seeds/missions/1-kyu-create-ray-tracer.md +31 -8
  36. package/src/seeds/missions/2-dan-create-self-hosted.md +67 -0
  37. package/src/seeds/missions/2-kyu-create-markdown-compiler.md +48 -0
  38. package/src/seeds/missions/2-kyu-create-plot-code-lib.md +35 -16
  39. package/src/seeds/missions/3-kyu-analyze-lunar-lander.md +13 -14
  40. package/src/seeds/missions/3-kyu-evaluate-time-series-lab.md +22 -28
  41. package/src/seeds/missions/4-kyu-analyze-json-schema-diff.md +46 -2
  42. package/src/seeds/missions/4-kyu-apply-cron-engine.md +16 -18
  43. package/src/seeds/missions/4-kyu-apply-dense-encoding.md +14 -11
  44. package/src/seeds/missions/4-kyu-apply-owl-ontology.md +47 -0
  45. package/src/seeds/missions/5-kyu-apply-ascii-face.md +40 -0
  46. package/src/seeds/missions/5-kyu-apply-string-utils.md +17 -17
  47. package/src/seeds/missions/6-kyu-understand-hamming-distance.md +12 -12
  48. package/src/seeds/missions/6-kyu-understand-roman-numerals.md +12 -12
  49. package/src/seeds/missions/8-kyu-remember-hello-world.md +10 -0
  50. package/src/seeds/zero-MISSION.md +12 -12
  51. package/src/seeds/zero-package.json +1 -1
  52. package/src/seeds/missions/2-dan-create-agi.md +0 -22
  53. package/src/seeds/missions/2-kyu-evaluate-markdown-compiler.md +0 -33
  54. package/src/seeds/missions/3-kyu-evaluate-owl-ontology.md +0 -34
  55. package/src/seeds/missions/5-kyu-create-ascii-face.md +0 -4
@@ -1,4 +1,48 @@
1
1
  # Mission
2
2
 
3
- **json‑schema‑diff** is designed to help API developers and teams track and validate changes in JSON Schemas.
4
- By providing a human‑readable diff, the tool simplifies the evolution of API definitions and facilitates collaboration during version upgrades.
3
+ A JavaScript library that computes structured diffs between two JSON Schema (Draft-07) documents, helping API developers track and validate schema changes across versions.
4
+
5
+ ## Required Capabilities
6
+
7
+ - Compare two JSON Schema objects and return an array of change records.
8
+ - Render changes as human-readable text or JSON.
9
+ - Classify each change as `"breaking"`, `"compatible"`, or `"informational"`.
10
+
11
+ ## Change Record Format
12
+
13
+ Each change is a plain object with these fields:
14
+
15
+ ```js
16
+ { path: "/properties/email", changeType: "type-changed", before: "string", after: "number" }
17
+ ```
18
+
19
+ Supported `changeType` values:
20
+
21
+ - `property-added` / `property-removed`
22
+ - `type-changed`
23
+ - `required-added` / `required-removed`
24
+ - `enum-value-added` / `enum-value-removed`
25
+ - `description-changed`
26
+ - `nested-changed` (recursive diff of sub-schemas)
27
+
28
+ ## Requirements
29
+
30
+ - Resolve local `$ref` pointers (JSON Pointer within the same document) before diffing. Remote `$ref` is out of scope — throw if encountered.
31
+ - Traverse `properties`, `items`, `allOf`, `oneOf`, `anyOf` recursively.
32
+ - Export all public API as named exports from `src/lib/main.js`.
33
+ - No external runtime dependencies.
34
+ - Comprehensive unit tests covering each change type, nested schemas, and `$ref` resolution.
35
+ - README with usage examples showing a before/after schema pair.
36
+
37
+ ## Acceptance Criteria
38
+
39
+ - [ ] Diffing two schemas returns an array of change objects
40
+ - [ ] Detects added and removed properties
41
+ - [ ] Detects type changes (e.g. `"string"` → `"number"`)
42
+ - [ ] Detects `required` array changes
43
+ - [ ] Handles nested schemas recursively (properties within properties)
44
+ - [ ] Resolves local `$ref` before diffing
45
+ - [ ] Classifying a removed required property returns `"breaking"`
46
+ - [ ] Formatting changes produces readable text output
47
+ - [ ] All unit tests pass
48
+ - [ ] README documents usage with examples
@@ -2,34 +2,32 @@
2
2
 
3
3
  A JavaScript library that parses cron expressions, computes next run times, and checks schedule matches.
4
4
 
5
- ## Core Functions
5
+ ## Required Capabilities
6
6
 
7
- - `parseCron(expression)` — parse a cron expression (standard 5-field, or 6-field with seconds) into a structured object. Supports ranges (`1-5`), lists (`1,3,5`), steps (`*/15`), and wildcards (`*`).
8
- - `nextRun(expression, after?)` — compute the next run time after the given date (default: now). Returns a `Date`.
9
- - `nextRuns(expression, count, after?)` — compute the next N run times. Returns an array of `Date`.
10
- - `matches(expression, date)` check if a date matches a cron expression. Returns boolean.
11
- - `toString(parsed)` — convert a parsed cron object back to a cron string.
12
-
13
- ## Special Strings
14
-
15
- Support these shortcuts: `@yearly` (`0 0 1 1 *`), `@monthly` (`0 0 1 * *`), `@weekly` (`0 0 * * 0`), `@daily` (`0 0 * * *`), `@hourly` (`0 * * * *`).
7
+ - Parse a cron expression (standard 5-field, or 6-field with seconds) into a structured object. Support ranges (`1-5`), lists (`1,3,5`), steps (`*/15`), and wildcards (`*`).
8
+ - Compute the next run time after a given date (default: now).
9
+ - Compute the next N run times after a given date.
10
+ - Check whether a specific date matches a cron expression.
11
+ - Convert a parsed cron object back to a cron string.
12
+ - Support shortcuts: `@yearly` (`0 0 1 1 *`), `@monthly` (`0 0 1 * *`), `@weekly` (`0 0 * * 0`), `@daily` (`0 0 * * *`), `@hourly` (`0 * * * *`).
16
13
 
17
14
  ## Requirements
18
15
 
19
- - Handle edge cases: DST transitions, month-end boundaries (e.g. "30th of February"), leap years.
16
+ - Handle edge cases: month-end boundaries (e.g. `0 0 31 * *` fires only in months with 31 days — skip months with fewer days, do not fire on the last day as a fallback), leap years (Feb 29 fires only in leap years).
17
+ - All times are UTC. Timezone support is out of scope.
20
18
  - Validate expressions: throw on invalid syntax with a descriptive error message.
21
- - No external dependencies required (but allowed if beneficial).
22
- - Export all functions as named exports from `src/lib/main.js`.
19
+ - No external runtime dependencies.
20
+ - Export all public API as named exports from `src/lib/main.js`.
23
21
  - Comprehensive unit tests covering field combinations, special strings, edge cases, and invalid input.
24
22
  - README with usage examples.
25
23
 
26
24
  ## Acceptance Criteria
27
25
 
28
- - [ ] `parseCron("*/15 * * * *")` returns a valid parsed object
29
- - [ ] `nextRun("0 9 * * 1")` returns the next Monday at 09:00
30
- - [ ] `matches("0 0 25 12 *", new Date("2025-12-25"))` returns `true`
31
- - [ ] `nextRuns("@daily", 7)` returns 7 consecutive daily dates
32
- - [ ] DST transitions handled correctly (no skipped or duplicated runs)
26
+ - [ ] Parsing `"*/15 * * * *"` returns a valid structured object
27
+ - [ ] Next run for `"0 9 * * 1"` returns the next Monday at 09:00 UTC
28
+ - [ ] Matching `"0 0 25 12 *"` against `2025-12-25T00:00:00Z` returns `true`
29
+ - [ ] Next 7 runs for `"@daily"` returns 7 consecutive daily dates
30
+ - [ ] Next 3 runs for `"0 0 31 * *"` starting from `2025-01-01` returns dates in Jan, Mar, May (skips months without 31 days)
33
31
  - [ ] Invalid expressions throw descriptive errors
34
32
  - [ ] All unit tests pass
35
33
  - [ ] README documents usage with examples
@@ -2,12 +2,12 @@
2
2
 
3
3
  A JavaScript library that explores the frontier of binary-to-text encoding density using printable characters. The benchmark: produce the shortest possible printable representation of a v7 UUID.
4
4
 
5
- ## Core Functions
5
+ ## Required Capabilities
6
6
 
7
- - `encode(buffer, encoding)` / `decode(str, encoding)` — encode/decode arbitrary binary data using a named encoding.
8
- - `encodeUUID(uuid)` / `decodeUUID(str)` — shorthand for UUID encoding (strip dashes, encode the 16 bytes).
9
- - `createEncoding(name, charset)` — define a custom encoding from a character set string.
10
- - `listEncodings()` — return available encodings with their bit density and charset info.
7
+ - Encode and decode arbitrary binary data (`Uint8Array`) using a named encoding.
8
+ - Shorthand for UUID encoding: strip dashes from a UUID string, encode the 16 bytes, and reverse.
9
+ - Define custom encodings from a character set string.
10
+ - List available encodings with their bit density and charset info.
11
11
 
12
12
  ## Built-in Encodings
13
13
 
@@ -16,22 +16,25 @@ The library should implement progressively denser encodings:
16
16
  - `base62` — `[0-9a-zA-Z]`, ~5.95 bits/char, URL-safe, 22 chars for a UUID
17
17
  - `base85` (Ascii85/Z85) — ~6.41 bits/char, 20 chars for a UUID
18
18
  - `base91` — ~6.50 bits/char, ~20 chars for a UUID
19
- - Optionally: custom higher bases cherry-picking from safe printable Unicode
19
+ - Optionally: custom higher bases using printable ASCII characters U+0021–U+007E (excluding space), omitting ambiguous characters (`0`/`O`, `1`/`l`/`I`)
20
20
 
21
21
  ## Requirements
22
22
 
23
- - Round-trip property: `decode(encode(x, enc), enc)` must equal `x` for all inputs and all encodings.
24
- - No control characters, no ambiguous characters (0/O, 1/l/I in contexts where they matter).
23
+ - Round-trip property: decoding an encoded value must equal the original for all inputs and all encodings.
24
+ - No control characters. Exclude visually ambiguous characters (`0`/`O`, `1`/`l`/`I`) from custom charsets.
25
+ - Input type for encode/decode is `Uint8Array`.
26
+ - Baseline comparison: UUID hex = 32 chars, base64 (no padding) = 22 chars. The densest encoding should produce fewer than 22 characters for a UUID.
25
27
  - Test across edge cases: all-zero bytes, all-0xFF bytes, single byte, empty buffer.
26
28
  - Compare encoded UUID lengths across all encodings.
27
- - Export all functions as named exports from `src/lib/main.js`.
29
+ - Export all public API as named exports from `src/lib/main.js`.
28
30
  - README with UUID encoding comparison table.
29
31
 
30
32
  ## Acceptance Criteria
31
33
 
32
34
  - [ ] At least 3 working encodings (base62, base85, one higher)
33
35
  - [ ] Round-trip correct for arbitrary binary data including edge cases
34
- - [ ] UUID encoding shorter than base64 (< 24 chars) for the densest encoding
35
- - [ ] `listEncodings()` returns encoding metadata
36
+ - [ ] UUID encoding shorter than base64 (< 22 chars) for the densest encoding
37
+ - [ ] Listing encodings returns encoding metadata (name, bits/char, charset size)
38
+ - [ ] Custom encoding can be created from a charset string
36
39
  - [ ] All unit tests pass
37
40
  - [ ] README shows UUID encoding comparison table
@@ -0,0 +1,47 @@
1
+ # Mission
2
+
3
+ A JavaScript library that manages a simple OWL-like ontology stored as JSON-LD files in a `data/` directory at the project root.
4
+
5
+ ## Required Capabilities
6
+
7
+ - Define ontology classes, optionally with a superclass.
8
+ - Define properties linking two classes (domain and range).
9
+ - Add individuals (instances of a class) with property values.
10
+ - Query the ontology:
11
+ - By class — return all individuals of that class (including subclasses).
12
+ - By property value — return all individuals with a matching property value.
13
+ - Load the ontology from JSON-LD files in `data/` and persist it back.
14
+ - Return counts of classes, properties, and individuals.
15
+
16
+ ## JSON-LD Format
17
+
18
+ - Use namespace `http://example.org/ontology#` as the `@context` vocabulary.
19
+ - Store one file per class in `data/`, named `<ClassName>.jsonld` (e.g. `data/Mammal.jsonld`).
20
+ - Each file contains the class definition and its individuals as a JSON-LD graph.
21
+
22
+ ## Seed Ontology
23
+
24
+ The library must include a seed ontology demonstrating all features:
25
+
26
+ - Classes: `Animal` > `Mammal` > `Dog`, `Cat`; `Animal` > `Bird` > `Parrot`
27
+ - Properties: `hasName` (string), `hasLegs` (integer)
28
+ - Individuals: at least 3 (e.g. a Dog named "Rex" with 4 legs, a Cat named "Whiskers", a Parrot named "Polly" with 2 legs)
29
+
30
+ ## Requirements
31
+
32
+ - Export all public API as named exports from `src/lib/main.js`.
33
+ - No external runtime dependencies.
34
+ - Comprehensive unit tests covering CRUD operations, querying (both patterns), persistence round-trip, and stats.
35
+ - README with usage examples.
36
+
37
+ ## Acceptance Criteria
38
+
39
+ - [ ] Can define classes with inheritance (superclass)
40
+ - [ ] Can define properties with domain and range
41
+ - [ ] Can add individuals and query by class (returns subclass instances too)
42
+ - [ ] Can query by property value
43
+ - [ ] Data persists to `data/` as JSON-LD files and loads back correctly (round-trip)
44
+ - [ ] Seed ontology with animals is populated in `data/`
45
+ - [ ] Statistics return correct counts of classes, properties, and individuals
46
+ - [ ] All unit tests pass
47
+ - [ ] README documents the API with examples
@@ -0,0 +1,40 @@
1
+ # Mission
2
+
3
+ A JavaScript library and CLI that renders emotion as ASCII art faces. Supports a fixed set of emotions, each with a distinct facial expression.
4
+
5
+ ## Required Capabilities
6
+
7
+ - Render a named emotion as a multi-line ASCII art face.
8
+ - List all supported emotion names.
9
+ - Support exactly these 6 emotions: `happy`, `sad`, `angry`, `surprised`, `neutral`, `confused`.
10
+
11
+ ## Constraints
12
+
13
+ Each face must be:
14
+ - At least 5 lines tall and 9 characters wide
15
+ - Visually distinct from all other faces (different mouth, eyebrow, or eye patterns)
16
+ - Composed only of printable ASCII characters (no Unicode)
17
+
18
+ Unrecognised emotions must throw `TypeError`.
19
+
20
+ ## CLI
21
+
22
+ When run as `node src/lib/main.js --emotion <name>`, print the face to stdout and exit with code 0. When run with `--list`, print all supported emotion names one per line. Print an error message and exit with code 1 for unrecognised emotions.
23
+
24
+ ## Requirements
25
+
26
+ - Export all public API as named exports from `src/lib/main.js`.
27
+ - No external runtime dependencies.
28
+ - Comprehensive unit tests verifying each emotion produces distinct output of the required dimensions.
29
+ - README with examples showing each face.
30
+
31
+ ## Acceptance Criteria
32
+
33
+ - [ ] Listing emotions returns `["happy", "sad", "angry", "surprised", "neutral", "confused"]`
34
+ - [ ] Rendering `"happy"` produces a string of at least 5 lines and 9 characters wide
35
+ - [ ] Each of the 6 emotions produces visually distinct output (no two are identical)
36
+ - [ ] Rendering an unknown emotion throws `TypeError`
37
+ - [ ] CLI `--emotion happy` prints a face to stdout
38
+ - [ ] CLI `--list` prints all 6 emotion names
39
+ - [ ] All unit tests pass
40
+ - [ ] README shows all 6 faces
@@ -2,35 +2,35 @@
2
2
 
3
3
  A JavaScript library of string utility functions. This is a bag-of-functions problem — each function is independent.
4
4
 
5
- ## Core Functions
5
+ ## Required Capabilities
6
6
 
7
- Export each as a named function from `src/lib/main.js`:
7
+ The library must provide these 10 string operations, exported as named functions from `src/lib/main.js`:
8
8
 
9
- - `slugify(str)` — convert to URL-friendly slug (lowercase, hyphens, strip non-alphanumeric)
10
- - `truncate(str, maxLength, suffix?)` — truncate with suffix (default "…"), don't break mid-word
11
- - `camelCase(str)` — convert to camelCase
12
- - `kebabCase(str)` — convert to kebab-case
13
- - `titleCase(str)` — capitalise first letter of each word
14
- - `wordWrap(str, width)` — wrap text at word boundaries to given width
15
- - `stripHtml(str)` — remove HTML tags, decode common entities
16
- - `escapeRegex(str)` — escape special regex characters
17
- - `pluralize(word, count)` — basic English pluralisation (add "s", handle "y""ies", "s""ses", etc.)
18
- - `levenshteinDistance(a, b)` — compute edit distance between two strings
9
+ - **Slugify** — convert to URL-friendly slug (lowercase, hyphens, strip non-alphanumeric)
10
+ - **Truncate** — truncate with suffix (default "…"), don't break mid-word
11
+ - **camelCase** — convert to camelCase
12
+ - **kebabCase** — convert to kebab-case
13
+ - **titleCase** — capitalise first letter of each word
14
+ - **wordWrap**soft wrap text at word boundaries. Never break a word. If a single word exceeds `width`, place it on its own line unbroken. Line separator is `\n`.
15
+ - **stripHtml** — remove HTML tags, decode common entities
16
+ - **escapeRegex** — escape special regex characters
17
+ - **Pluralize** — basic English pluralisation. Rules: words ending in s/x/z/ch/sh add "es"; consonant+"y" changes to "ies"; "f"/"fe" changes to "ves"; all others add "s". Irregular plurals (mouse/mice, child/children) are out of scope.
18
+ - **Levenshtein distance** — compute edit distance between two strings
19
19
 
20
20
  ## Requirements
21
21
 
22
22
  - Handle edge cases: empty strings, null/undefined (return empty string), Unicode characters.
23
- - No external dependencies required (but allowed if beneficial).
23
+ - No external runtime dependencies.
24
24
  - Comprehensive unit tests for each function including edge cases.
25
25
  - README with usage examples for each function.
26
26
 
27
27
  ## Acceptance Criteria
28
28
 
29
29
  - [ ] All 10 functions are exported and work correctly
30
- - [ ] `slugify("Hello World!")` returns `"hello-world"`
31
- - [ ] `truncate("Hello World", 8)` returns `"Hello…"`
32
- - [ ] `camelCase("foo-bar-baz")` returns `"fooBarBaz"`
33
- - [ ] `levenshteinDistance("kitten", "sitting")` returns `3`
30
+ - [ ] Slugifying `"Hello World!"` produces `"hello-world"`
31
+ - [ ] Truncating `"Hello World"` to length 8 produces `"Hello…"`
32
+ - [ ] camelCase of `"foo-bar-baz"` produces `"fooBarBaz"`
33
+ - [ ] Levenshtein distance between `"kitten"` and `"sitting"` is `3`
34
34
  - [ ] Edge cases (empty string, null, Unicode) handled gracefully
35
35
  - [ ] All unit tests pass
36
36
  - [ ] README documents all functions with examples
@@ -1,26 +1,26 @@
1
1
  # Mission
2
2
 
3
- A JavaScript library exporting Hamming distance functions.
3
+ A JavaScript library for computing Hamming distances — between equal-length strings (character positions that differ) and between non-negative integers (differing bits).
4
4
 
5
- ## Core Functions
5
+ ## Required Capabilities
6
6
 
7
- - `hammingDistance(a, b)` — compute the Hamming distance between two strings of equal length (number of positions where characters differ). Throw an error if the strings have different lengths.
8
- - `hammingDistanceBits(x, y)` — compute the Hamming distance between two non-negative integers (count the number of differing bits).
7
+ - Compute the Hamming distance between two strings of equal length.
8
+ - Compute the Hamming distance between two non-negative integers by counting differing bits.
9
+ - Handle Unicode strings correctly (compare code points, not UTF-16 code units).
10
+ - Validate inputs: throw `TypeError` for non-string/non-integer arguments, `RangeError` for unequal-length strings or negative integers.
9
11
 
10
12
  ## Requirements
11
13
 
12
- - Handle Unicode strings correctly (compare code points, not UTF-16 code units).
13
- - Validate inputs: throw `TypeError` for non-string/non-integer arguments, `RangeError` for unequal-length strings or negative integers.
14
- - Export both functions as named exports from `src/lib/main.js`.
14
+ - Export all public API as named exports from `src/lib/main.js`.
15
15
  - Comprehensive unit tests covering normal cases, edge cases (empty strings, zero, large integers), and error cases.
16
16
  - README with usage examples and API documentation.
17
17
 
18
18
  ## Acceptance Criteria
19
19
 
20
- - [ ] `hammingDistance("karolin", "kathrin")` returns `3`
21
- - [ ] `hammingDistance("", "")` returns `0`
22
- - [ ] `hammingDistance("a", "bb")` throws `RangeError`
23
- - [ ] `hammingDistanceBits(1, 4)` returns `2` (binary: 001 vs 100)
24
- - [ ] `hammingDistanceBits(0, 0)` returns `0`
20
+ - [ ] Hamming distance between `"karolin"` and `"kathrin"` is `3`
21
+ - [ ] Hamming distance between `""` and `""` is `0`
22
+ - [ ] Hamming distance between strings of different lengths throws `RangeError`
23
+ - [ ] Bit-level Hamming distance between `1` and `4` is `2` (binary: 001 vs 100)
24
+ - [ ] Bit-level Hamming distance between `0` and `0` is `0`
25
25
  - [ ] All unit tests pass
26
26
  - [ ] README documents usage with examples
@@ -2,29 +2,29 @@
2
2
 
3
3
  A JavaScript library for converting between integers and Roman numeral strings.
4
4
 
5
- ## Core Functions
5
+ ## Required Capabilities
6
6
 
7
- - `toRoman(n)` — convert an integer (1–3999) to its Roman numeral representation using subtractive notation (IV, IX, XL, XC, CD, CM).
8
- - `fromRoman(s)` — convert a Roman numeral string back to an integer.
7
+ - Convert an integer (1–3999) to its Roman numeral representation using subtractive notation (IV, IX, XL, XC, CD, CM).
8
+ - Convert a Roman numeral string back to an integer.
9
+ - The round-trip property must hold: converting to Roman and back yields the original integer for all valid values.
9
10
 
10
11
  ## Requirements
11
12
 
12
13
  - Throw `RangeError` for numbers outside 1–3999.
13
14
  - Throw `TypeError` for invalid Roman numeral strings.
14
15
  - Handle subtractive notation correctly (e.g. IV = 4, not IIII).
15
- - The round-trip property must hold: `fromRoman(toRoman(n)) === n` for all valid n.
16
- - Export both functions as named exports from `src/lib/main.js`.
16
+ - Export all public API as named exports from `src/lib/main.js`.
17
17
  - Comprehensive unit tests including boundary values (1, 3999), subtractive cases, and invalid inputs.
18
18
  - README with usage examples and conversion table.
19
19
 
20
20
  ## Acceptance Criteria
21
21
 
22
- - [ ] `toRoman(1994)` returns `"MCMXCIV"`
23
- - [ ] `fromRoman("MCMXCIV")` returns `1994`
24
- - [ ] `toRoman(4)` returns `"IV"`
25
- - [ ] `fromRoman(toRoman(n)) === n` for all n in 1–3999
26
- - [ ] `toRoman(0)` throws `RangeError`
27
- - [ ] `toRoman(4000)` throws `RangeError`
28
- - [ ] `fromRoman("IIII")` throws or returns `4` (accept either; document the choice)
22
+ - [ ] Converting `1994` to Roman produces `"MCMXCIV"`
23
+ - [ ] Converting `"MCMXCIV"` from Roman produces `1994`
24
+ - [ ] Converting `4` to Roman produces `"IV"`
25
+ - [ ] Round-trip holds for all n in 1–3999
26
+ - [ ] Converting `0` to Roman throws `RangeError`
27
+ - [ ] Converting `4000` to Roman throws `RangeError`
28
+ - [ ] Converting `"IIII"` from Roman throws `TypeError` (strict: only subtractive notation accepted)
29
29
  - [ ] All unit tests pass
30
30
  - [ ] README documents usage with examples
@@ -1,3 +1,13 @@
1
1
  # Mission
2
2
 
3
3
  Deliver the traditional first program to write in a new language, the "Hello World!" message.
4
+
5
+ ## Core Functions
6
+
7
+ - `helloWorld()` — return the greeting string.
8
+
9
+ ## Acceptance Criteria
10
+
11
+ - [ ] `src/lib/main.js` exports a `helloWorld()` function
12
+ - [ ] `helloWorld()` returns the string `"Hello World!"`
13
+ - [ ] All unit tests pass
@@ -1,26 +1,26 @@
1
1
  # Mission
2
2
 
3
- A JavaScript library exporting Hamming distance functions.
3
+ A JavaScript library for computing Hamming distances — between equal-length strings (character positions that differ) and between non-negative integers (differing bits).
4
4
 
5
- ## Core Functions
5
+ ## Required Capabilities
6
6
 
7
- - `hammingDistance(a, b)` — compute the Hamming distance between two strings of equal length (number of positions where characters differ). Throw an error if the strings have different lengths.
8
- - `hammingDistanceBits(x, y)` — compute the Hamming distance between two non-negative integers (count the number of differing bits).
7
+ - Compute the Hamming distance between two strings of equal length.
8
+ - Compute the Hamming distance between two non-negative integers by counting differing bits.
9
+ - Handle Unicode strings correctly (compare code points, not UTF-16 code units).
10
+ - Validate inputs: throw `TypeError` for non-string/non-integer arguments, `RangeError` for unequal-length strings or negative integers.
9
11
 
10
12
  ## Requirements
11
13
 
12
- - Handle Unicode strings correctly (compare code points, not UTF-16 code units).
13
- - Validate inputs: throw `TypeError` for non-string/non-integer arguments, `RangeError` for unequal-length strings or negative integers.
14
- - Export both functions as named exports from `src/lib/main.js`.
14
+ - Export all public API as named exports from `src/lib/main.js`.
15
15
  - Comprehensive unit tests covering normal cases, edge cases (empty strings, zero, large integers), and error cases.
16
16
  - README with usage examples and API documentation.
17
17
 
18
18
  ## Acceptance Criteria
19
19
 
20
- - [ ] `hammingDistance("karolin", "kathrin")` returns `3`
21
- - [ ] `hammingDistance("", "")` returns `0`
22
- - [ ] `hammingDistance("a", "bb")` throws `RangeError`
23
- - [ ] `hammingDistanceBits(1, 4)` returns `2` (binary: 001 vs 100)
24
- - [ ] `hammingDistanceBits(0, 0)` returns `0`
20
+ - [ ] Hamming distance between `"karolin"` and `"kathrin"` is `3`
21
+ - [ ] Hamming distance between `""` and `""` is `0`
22
+ - [ ] Hamming distance between strings of different lengths throws `RangeError`
23
+ - [ ] Bit-level Hamming distance between `1` and `4` is `2` (binary: 001 vs 100)
24
+ - [ ] Bit-level Hamming distance between `0` and `0` is `0`
25
25
  - [ ] All unit tests pass
26
26
  - [ ] README documents usage with examples
@@ -17,7 +17,7 @@
17
17
  "author": "",
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@xn-intenton-z2a/agentic-lib": "^7.4.14"
20
+ "@xn-intenton-z2a/agentic-lib": "^7.4.16"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@playwright/test": "^1.58.0",
@@ -1,22 +0,0 @@
1
- # Mission
2
-
3
- **Agentic-lib** is evolving into an intelligent automation system endowed with multiple AGI-aligned capabilities, all oriented toward a coherent long-term purpose: enabling agentic, cross-repository intelligent automation. The ultimate vision is a network of self-managing coding agents that can understand high-level goals, break them down, execute tasks across many projects, learn from their experiences, and seek assistance when needed – all with minimal human intervention. Each of the new features (Memory, Planning, Goal Decomposition, Self-Improvement, Replication, and Help-Seeking) contributes to this vision in a concrete, feasible way, building the stepping stones toward a truly autonomous development workflow.
4
-
5
- In the near term, these traits function as enhancements to the JavaScript CLI/Lambda agent that drives **agentic-lib**:
6
- - **Memory** provides continuity. The agent now retains a log of actions and outcomes, which means it can carry context from one step to the next. This is immediately useful for avoiding redundant operations and will later allow experience-based learning. For example, when the agent works on Repository A and then on Repository B, a memory of patterns or solutions from A could inform its actions on B.
7
- - **Planning** gives the agent foresight. Instead of reacting to one command at a time, it can map out a sequence of tasks to achieve a bigger objective. Right now it executes those plans instantly, but this capability will expand to planning over longer durations (even across workflow runs) and coordinating complex changes (like a multi-step refactor that touches many parts of a codebase or multiple repositories).
8
- - **Goal Decomposition** adds transparency and manageability to complex objectives. The agent can articulate a game plan (a set of sub-tasks) for a broad goal, which can be reviewed or assigned out. In a multi-repository scenario, the agent might decompose a company-wide objective into repo-specific tasks. This structured breakdown makes large-scale automation safer and more organized, since each piece can be tracked (potentially as separate issues or pull requests).
9
- - **Self-Improvement** makes the agent reflective. By tracking its performance (how many errors, how fast it completes tasks) the agent lays the groundwork for optimizing itself. In the short run, this means better observability and diagnostics in the system. In the long run, the agent could use this information to autonomously fine-tune its own algorithms – for instance, detecting that it often fails a certain kind of task and adjusting its approach or updating its code. This trait keeps the agent aligned with best practices and efficiency as it scales up.
10
- - **Replication** unlocks scale. The agent is no longer a singleton processing one item at a time – it can replicate its effort either through parallel processing or by spawning new agent instances. Immediately, this manifests as parallel command execution which speeds up workflows (e.g., running multiple checks or updates simultaneously). Looking forward, replication means the agentic-lib model can be instantiated in multiple environments at once: think of dozens of agent clones each working on a different repository but sharing the same core knowledge. This horizontal scaling is essential for cross-repository automation in large organizations.
11
- - **Help-Seeking** keeps the agent humble and effective. When the agent encounters something it doesn’t know, it can ask an external AI or resource, rather than stalling or guessing wrongly. Currently, this is achieved via OpenAI API calls for answers. As this feature matures, the agent will integrate more sources (documentation, human feedback) and become increasingly adept at knowing when and how to seek help. This ensures that as the agent’s autonomy grows, it remains grounded and correct in its actions, leveraging the broader world’s knowledge.
12
-
13
- All these capabilities align to serve a **unified mission**: an autonomous system that can handle the lifecycle of software development tasks across multiple projects. Concretely, we are moving toward a scenario where you could give the agent a high-level directive (for example, “ensure all our repositories are using the latest version of library X and adhere to security policy Y”), and the agent would:
14
- 1. **Understand and Plan:** It would use Goal Decomposition and Planning to figure out what needs to be done for each repository – maybe creating a checklist per repository.
15
- 2. **Take Action in Parallel:** Using Replication, it would initiate changes in multiple repositories at once (branching, editing files, running tests), using memory to avoid repeating known fixes and using its plan as a guide.
16
- 3. **Learn and Adapt:** Throughout, Self-Improvement metrics would monitor which repos encountered issues (maybe some tests failed or some had edge cases). The agent could adjust its approach repository by repository – for instance, if it learned a better fix in one place, Memory would carry that knowledge to the others.
17
- 4. **Seek Guidance if Stuck:** If a particular repository has an unusual setup that the agent doesn’t understand, the Help-Seeking trait would kick in – the agent might query documentation or even open a “help needed” issue for a human maintainer, ensuring that it doesn’t silently fail.
18
- 5. **Deliver Results:** Finally, the agent would open pull requests or issues summarizing changes for each repository (or automatically merge them if permitted), effectively executing a coordinated cross-repo update with minimal human oversight.
19
-
20
- The long-term purpose is ambitious but grounded in these tangible capabilities. Each new feature is a **plausible next step**: for example, after implementing basic memory, the next step is to make that memory persistent or sharable among agent instances (so that one agent’s learnings become every agent’s knowledge). After introducing planning and decomposition, the next step is to integrate those with the GitHub issue workflow – the agent could start creating and managing issues on its own to track sub-tasks. Self-improvement opens the door to techniques like on-the-fly model prompting (the agent asking “how can I do this better?” and applying the advice). Replication will eventually entail deploying the agent as a service or container that can be instantiated on demand for whatever project needs it. And help-seeking will evolve into a rich web of integrations with documentation, Q&A forums, and direct human loop-ins when necessary.
21
-
22
- In summary, the trajectory defined in this feature set steers **agentic-lib** toward becoming a general-purpose automation AI for software projects. It’s not science fiction – each step is achievable with incremental improvements and integrations, and together they compound into a system that can handle increasing complexity. By focusing on feasible enhancements now (like logging memory, adding parallelism, using an API for help, etc.), we ensure that future leaps (like autonomous multi-repo refactoring or self-directed learning) are built on solid ground. All traits work in concert: memory and help-seeking ensure it has the knowledge, planning and decomposition give it strategy, replication gives it manpower, and self-improvement ensures it keeps getting better. With these aligned, **agentic-lib** can truly fulfill its mission of agentic, cross-repository intelligent automation – a stepping stone toward the broader vision of self-evolving code.
@@ -1,33 +0,0 @@
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)
@@ -1,34 +0,0 @@
1
- # Mission
2
-
3
- A JavaScript library that manages a simple OWL-like ontology stored as JSON-LD files in a `data/` directory. The pipeline should both build the library AND populate it with example ontology data over successive transform cycles.
4
-
5
- This is an ongoing mission. Do not set schedule to off.
6
-
7
- ## Core Functions
8
-
9
- - `defineClass(name, superclass?)` — define an ontology class, optionally as a subclass.
10
- - `defineProperty(name, domain, range, opts?)` — define a property linking two classes.
11
- - `addIndividual(className, id, properties)` — add an instance of a class with property values.
12
- - `query(pattern)` — basic pattern matching over the ontology (e.g. find all instances of a class, find by property value).
13
- - `load(dir?)` — load ontology from JSON-LD files in the data directory.
14
- - `save(dir?)` — persist the ontology to JSON-LD files.
15
- - `stats()` — return counts of classes, properties, and individuals.
16
-
17
- ## Requirements
18
-
19
- - Store data as JSON-LD files in `data/` (one file per class or a single graph file — implementer's choice).
20
- - The library should be usable both programmatically and to build up ontology data over time.
21
- - Export all functions as named exports from `src/lib/main.js`.
22
- - Include seed ontology data (e.g. a simple animal taxonomy) to demonstrate the library works.
23
- - Unit tests covering CRUD operations, querying, and persistence.
24
- - README with usage examples.
25
-
26
- ## Acceptance Criteria
27
-
28
- - [ ] Can define classes and properties
29
- - [ ] Can add individuals and query them
30
- - [ ] Data persists to and loads from JSON-LD files
31
- - [ ] At least one example ontology (e.g. animals) is populated in `data/`
32
- - [ ] `stats()` returns correct counts
33
- - [ ] All unit tests pass
34
- - [ ] README documents the API with examples
@@ -1,4 +0,0 @@
1
- # Mission
2
-
3
- Create a CLI app that depicts emotion using facial expressions using ascii art.
4
- This will be the emotion communication mechanism for an AI.