@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.
- package/.github/agents/agent-apply-fix.md +30 -1
- package/.github/agents/agent-director.md +28 -7
- package/.github/agents/agent-discussion-bot.md +28 -0
- package/.github/agents/agent-implementation-review.md +21 -0
- package/.github/agents/agent-issue-resolution.md +32 -0
- package/.github/agents/agent-iterate.md +33 -0
- package/.github/agents/agent-maintain-features.md +34 -0
- package/.github/agents/agent-maintain-library.md +39 -0
- package/.github/agents/agent-ready-issue.md +21 -0
- package/.github/agents/agent-review-issue.md +16 -0
- package/.github/agents/agent-supervisor.md +60 -0
- package/.github/workflows/agentic-lib-init.yml +76 -11
- package/.github/workflows/agentic-lib-schedule.yml +58 -6
- package/.github/workflows/agentic-lib-test.yml +31 -3
- package/.github/workflows/agentic-lib-update.yml +20 -0
- package/.github/workflows/agentic-lib-workflow.yml +42 -7
- package/README.md +23 -12
- package/agentic-lib.toml +2 -2
- package/bin/agentic-lib.js +34 -4
- package/package.json +1 -1
- package/src/actions/agentic-step/index.js +35 -10
- package/src/actions/agentic-step/logging.js +5 -2
- package/src/actions/agentic-step/tasks/direct.js +50 -16
- package/src/actions/agentic-step/tasks/maintain-features.js +7 -0
- package/src/actions/agentic-step/tasks/maintain-library.js +10 -0
- package/src/actions/agentic-step/tasks/transform.js +37 -1
- package/src/actions/commit-if-changed/action.yml +2 -1
- package/src/copilot/config.js +2 -2
- package/src/copilot/github-tools.js +8 -2
- package/src/copilot/guards.js +4 -10
- package/src/copilot/state.js +214 -0
- package/src/copilot/telemetry.js +92 -10
- package/src/seeds/missions/1-dan-create-c64-emulator.md +13 -13
- package/src/seeds/missions/1-dan-create-planning-engine.md +82 -0
- package/src/seeds/missions/1-kyu-create-ray-tracer.md +31 -8
- package/src/seeds/missions/2-dan-create-self-hosted.md +67 -0
- package/src/seeds/missions/2-kyu-create-markdown-compiler.md +48 -0
- package/src/seeds/missions/2-kyu-create-plot-code-lib.md +35 -16
- package/src/seeds/missions/3-kyu-analyze-lunar-lander.md +13 -14
- package/src/seeds/missions/3-kyu-evaluate-time-series-lab.md +22 -28
- package/src/seeds/missions/4-kyu-analyze-json-schema-diff.md +46 -2
- package/src/seeds/missions/4-kyu-apply-cron-engine.md +16 -18
- package/src/seeds/missions/4-kyu-apply-dense-encoding.md +14 -11
- package/src/seeds/missions/4-kyu-apply-owl-ontology.md +47 -0
- package/src/seeds/missions/5-kyu-apply-ascii-face.md +40 -0
- package/src/seeds/missions/5-kyu-apply-string-utils.md +17 -17
- package/src/seeds/missions/6-kyu-understand-hamming-distance.md +12 -12
- package/src/seeds/missions/6-kyu-understand-roman-numerals.md +12 -12
- package/src/seeds/missions/8-kyu-remember-hello-world.md +10 -0
- package/src/seeds/zero-MISSION.md +12 -12
- package/src/seeds/zero-package.json +1 -1
- package/src/seeds/missions/2-dan-create-agi.md +0 -22
- package/src/seeds/missions/2-kyu-evaluate-markdown-compiler.md +0 -33
- package/src/seeds/missions/3-kyu-evaluate-owl-ontology.md +0 -34
- package/src/seeds/missions/5-kyu-create-ascii-face.md +0 -4
|
@@ -1,4 +1,48 @@
|
|
|
1
1
|
# Mission
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
##
|
|
5
|
+
## Required Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
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:
|
|
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
|
|
22
|
-
- Export all
|
|
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
|
-
- [ ] `
|
|
29
|
-
- [ ] `
|
|
30
|
-
- [ ] `
|
|
31
|
-
- [ ] `
|
|
32
|
-
- [ ]
|
|
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
|
-
##
|
|
5
|
+
## Required Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
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
|
|
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:
|
|
24
|
-
- No control characters
|
|
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
|
|
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 (<
|
|
35
|
-
- [ ]
|
|
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
|
-
##
|
|
5
|
+
## Required Capabilities
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The library must provide these 10 string operations, exported as named functions from `src/lib/main.js`:
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
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
|
|
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
|
-
- [ ] `
|
|
31
|
-
- [ ] `
|
|
32
|
-
- [ ] `
|
|
33
|
-
- [ ] `
|
|
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
|
|
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
|
-
##
|
|
5
|
+
## Required Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
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
|
-
-
|
|
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
|
-
- [ ] `
|
|
21
|
-
- [ ] `
|
|
22
|
-
- [ ]
|
|
23
|
-
- [ ] `
|
|
24
|
-
- [ ] `
|
|
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
|
-
##
|
|
5
|
+
## Required Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
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
|
-
-
|
|
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
|
-
- [ ] `
|
|
23
|
-
- [ ] `
|
|
24
|
-
- [ ] `
|
|
25
|
-
- [ ]
|
|
26
|
-
- [ ] `
|
|
27
|
-
- [ ] `
|
|
28
|
-
- [ ] `
|
|
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
|
|
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
|
-
##
|
|
5
|
+
## Required Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
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
|
-
-
|
|
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
|
-
- [ ] `
|
|
21
|
-
- [ ] `
|
|
22
|
-
- [ ]
|
|
23
|
-
- [ ] `
|
|
24
|
-
- [ ] `
|
|
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
|
|
@@ -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 ``
|
|
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
|