litcodex-ai 0.3.0

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 (106) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/bin/litcodex.js +12 -0
  4. package/dist/cli.d.ts +23 -0
  5. package/dist/cli.js +183 -0
  6. package/dist/config-migration/backup.d.ts +2 -0
  7. package/dist/config-migration/backup.js +42 -0
  8. package/dist/config-migration/catalog.d.ts +22 -0
  9. package/dist/config-migration/catalog.js +99 -0
  10. package/dist/config-migration/cli.d.ts +14 -0
  11. package/dist/config-migration/cli.js +85 -0
  12. package/dist/config-migration/config-paths.d.ts +4 -0
  13. package/dist/config-migration/config-paths.js +64 -0
  14. package/dist/config-migration/errors.d.ts +11 -0
  15. package/dist/config-migration/errors.js +28 -0
  16. package/dist/config-migration/index.d.ts +44 -0
  17. package/dist/config-migration/index.js +210 -0
  18. package/dist/config-migration/multi-agent-v2-guard.d.ts +2 -0
  19. package/dist/config-migration/multi-agent-v2-guard.js +106 -0
  20. package/dist/config-migration/root-settings.d.ts +6 -0
  21. package/dist/config-migration/root-settings.js +104 -0
  22. package/dist/config-migration/state.d.ts +16 -0
  23. package/dist/config-migration/state.js +40 -0
  24. package/dist/config-migration/toml-shape.d.ts +8 -0
  25. package/dist/config-migration/toml-shape.js +107 -0
  26. package/dist/install/codex.d.ts +34 -0
  27. package/dist/install/codex.js +94 -0
  28. package/dist/install/doctor.d.ts +12 -0
  29. package/dist/install/doctor.js +83 -0
  30. package/dist/install/errors.d.ts +19 -0
  31. package/dist/install/errors.js +43 -0
  32. package/dist/install/execute.d.ts +39 -0
  33. package/dist/install/execute.js +193 -0
  34. package/dist/install/index.d.ts +19 -0
  35. package/dist/install/index.js +193 -0
  36. package/dist/install/marketplace.d.ts +5 -0
  37. package/dist/install/marketplace.js +10 -0
  38. package/dist/install/plan.d.ts +3 -0
  39. package/dist/install/plan.js +54 -0
  40. package/dist/install/render-plan.d.ts +3 -0
  41. package/dist/install/render-plan.js +10 -0
  42. package/dist/install/types.d.ts +45 -0
  43. package/dist/install/types.js +5 -0
  44. package/model-catalog.json +31 -0
  45. package/node_modules/@litcodex/lit-loop/CHANGELOG.md +19 -0
  46. package/node_modules/@litcodex/lit-loop/LICENSE +21 -0
  47. package/node_modules/@litcodex/lit-loop/NOTICE +8 -0
  48. package/node_modules/@litcodex/lit-loop/README.md +37 -0
  49. package/node_modules/@litcodex/lit-loop/agents/litcodex-explorer.toml +75 -0
  50. package/node_modules/@litcodex/lit-loop/agents/litcodex-librarian.toml +98 -0
  51. package/node_modules/@litcodex/lit-loop/agents/litcodex-litwork-reviewer.toml +21 -0
  52. package/node_modules/@litcodex/lit-loop/agents/litcodex-metis.toml +64 -0
  53. package/node_modules/@litcodex/lit-loop/agents/litcodex-momus.toml +68 -0
  54. package/node_modules/@litcodex/lit-loop/agents/litcodex-plan.toml +163 -0
  55. package/node_modules/@litcodex/lit-loop/directive.md +85 -0
  56. package/node_modules/@litcodex/lit-loop/directives/lit-plan.md +286 -0
  57. package/node_modules/@litcodex/lit-loop/directives/litgoal.md +103 -0
  58. package/node_modules/@litcodex/lit-loop/directives/litwork.md +363 -0
  59. package/node_modules/@litcodex/lit-loop/dist/_scaffold.d.ts +1 -0
  60. package/node_modules/@litcodex/lit-loop/dist/_scaffold.js +3 -0
  61. package/node_modules/@litcodex/lit-loop/dist/cli.d.ts +6 -0
  62. package/node_modules/@litcodex/lit-loop/dist/cli.js +44 -0
  63. package/node_modules/@litcodex/lit-loop/dist/codex-goal-instruction.d.ts +18 -0
  64. package/node_modules/@litcodex/lit-loop/dist/codex-goal-instruction.js +94 -0
  65. package/node_modules/@litcodex/lit-loop/dist/codex-hook.d.ts +38 -0
  66. package/node_modules/@litcodex/lit-loop/dist/codex-hook.js +126 -0
  67. package/node_modules/@litcodex/lit-loop/dist/directive.d.ts +35 -0
  68. package/node_modules/@litcodex/lit-loop/dist/directive.js +80 -0
  69. package/node_modules/@litcodex/lit-loop/dist/goal-status.d.ts +12 -0
  70. package/node_modules/@litcodex/lit-loop/dist/goal-status.js +25 -0
  71. package/node_modules/@litcodex/lit-loop/dist/guards.d.ts +73 -0
  72. package/node_modules/@litcodex/lit-loop/dist/guards.js +215 -0
  73. package/node_modules/@litcodex/lit-loop/dist/hook-cli.d.ts +17 -0
  74. package/node_modules/@litcodex/lit-loop/dist/hook-cli.js +94 -0
  75. package/node_modules/@litcodex/lit-loop/dist/loop-cli.d.ts +19 -0
  76. package/node_modules/@litcodex/lit-loop/dist/loop-cli.js +106 -0
  77. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-render.d.ts +7 -0
  78. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-render.js +39 -0
  79. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-types.d.ts +52 -0
  80. package/node_modules/@litcodex/lit-loop/dist/loop-doctor-types.js +7 -0
  81. package/node_modules/@litcodex/lit-loop/dist/loop-doctor.d.ts +21 -0
  82. package/node_modules/@litcodex/lit-loop/dist/loop-doctor.js +283 -0
  83. package/node_modules/@litcodex/lit-loop/dist/loop-errors.d.ts +15 -0
  84. package/node_modules/@litcodex/lit-loop/dist/loop-errors.js +43 -0
  85. package/node_modules/@litcodex/lit-loop/dist/loop-handlers.d.ts +18 -0
  86. package/node_modules/@litcodex/lit-loop/dist/loop-handlers.js +311 -0
  87. package/node_modules/@litcodex/lit-loop/dist/loop-model.d.ts +51 -0
  88. package/node_modules/@litcodex/lit-loop/dist/loop-model.js +165 -0
  89. package/node_modules/@litcodex/lit-loop/dist/loop-stdout.d.ts +6 -0
  90. package/node_modules/@litcodex/lit-loop/dist/loop-stdout.js +11 -0
  91. package/node_modules/@litcodex/lit-loop/dist/loop-types.d.ts +26 -0
  92. package/node_modules/@litcodex/lit-loop/dist/loop-types.js +8 -0
  93. package/node_modules/@litcodex/lit-loop/dist/markers.d.ts +9 -0
  94. package/node_modules/@litcodex/lit-loop/dist/markers.js +14 -0
  95. package/node_modules/@litcodex/lit-loop/dist/modes.d.ts +15 -0
  96. package/node_modules/@litcodex/lit-loop/dist/modes.js +56 -0
  97. package/node_modules/@litcodex/lit-loop/dist/state-paths.d.ts +41 -0
  98. package/node_modules/@litcodex/lit-loop/dist/state-paths.js +111 -0
  99. package/node_modules/@litcodex/lit-loop/dist/state-store.d.ts +39 -0
  100. package/node_modules/@litcodex/lit-loop/dist/state-store.js +419 -0
  101. package/node_modules/@litcodex/lit-loop/dist/state-types.d.ts +90 -0
  102. package/node_modules/@litcodex/lit-loop/dist/state-types.js +61 -0
  103. package/node_modules/@litcodex/lit-loop/dist/trigger.d.ts +54 -0
  104. package/node_modules/@litcodex/lit-loop/dist/trigger.js +75 -0
  105. package/node_modules/@litcodex/lit-loop/package.json +27 -0
  106. package/package.json +30 -0
@@ -0,0 +1,75 @@
1
+ // src/trigger.ts — M05 bounded lit trigger parser.
2
+ //
3
+ // Single source of truth for deciding whether a user prompt activates the LitCodex `lit-loop`
4
+ // workflow. Pure, side-effect-free, Unicode-aware. Accepts the bounded tokens `lit`, `lit-loop`,
5
+ // and `litcodex` (case-insensitive) and rejects every substring collision (`split`, `literal`,
6
+ // `litmus`, `lithium`, `glitter`, `flit`, `slit`, `litter`, …) while respecting Korean (Hangul)
7
+ // and English boundaries.
8
+ //
9
+ // This module imports NOTHING from `state-store`, `directive`, `guards`, `markers`, or
10
+ // `codex-hook` (one-way: hook → trigger, never the reverse). It reads no files, touches no state,
11
+ // emits no hook JSON, and never mutates the prompt. (A3 C9 flat layout; A2 §2.1 export surface.)
12
+ /**
13
+ * Frozen tuple of the accepted tokens in match-priority (longest-first) order.
14
+ * Exported so tests and the mode router (modes.ts) can enumerate without re-deriving.
15
+ */
16
+ export const LIT_TRIGGER_TOKENS = Object.freeze([
17
+ "lit-loop",
18
+ "lit-plan",
19
+ "litcodex",
20
+ "litgoal",
21
+ "litwork",
22
+ "lit",
23
+ ]);
24
+ /**
25
+ * The single canonical matcher. Unicode + case-insensitive, NON-global, NON-sticky.
26
+ * Boundaries: a token must be preceded by start-of-string OR a non `[letter|number|_]`
27
+ * code point, and must NOT be followed by `[letter|number|_|-]`.
28
+ *
29
+ * MUST NOT carry the /g or /y flag: a global regex retains `lastIndex` between calls and would
30
+ * make `.test()` return alternating results for the same input. Longest-first alternation
31
+ * (`lit-loop|lit-plan|litcodex|litgoal|litwork|lit`) guarantees a longer family token wins over a
32
+ * bare `lit` at the same start; the trailing-`-` lookahead means `lit work` (space) is a bare `lit`
33
+ * while `litwork` (glued) is the work mode. No nested quantifiers / no backreferences ⇒ ReDoS-free.
34
+ */
35
+ export const LIT_TRIGGER_PATTERN = /(?:^|[^\p{L}\p{N}_])(lit-loop|lit-plan|litcodex|litgoal|litwork|lit)(?![\p{L}\p{N}_-])/iu;
36
+ const NOT_A_STRING = "lit trigger: prompt must be a string";
37
+ /**
38
+ * Returns true iff `prompt` contains at least one bounded lit trigger.
39
+ *
40
+ * @param prompt Arbitrary untrusted user text (may be empty, multi-line, mixed-script).
41
+ * @throws TypeError if `prompt` is not a string (defensive guard for `unknown` callers).
42
+ */
43
+ export function isLitTriggerPrompt(prompt) {
44
+ if (typeof prompt !== "string") {
45
+ throw new TypeError(NOT_A_STRING);
46
+ }
47
+ // Non-global pattern ⇒ lastIndex is always 0 ⇒ idempotent across repeated calls.
48
+ return LIT_TRIGGER_PATTERN.test(prompt);
49
+ }
50
+ /**
51
+ * Returns the FIRST bounded lit trigger match in document order, or null if none.
52
+ * Deterministic: identical input always yields the identical result.
53
+ *
54
+ * @param prompt Arbitrary untrusted user text.
55
+ * @returns LitTriggerMatch for the earliest match (lowest `index`), else null.
56
+ * @throws TypeError if `prompt` is not a string.
57
+ */
58
+ export function matchLitTrigger(prompt) {
59
+ if (typeof prompt !== "string") {
60
+ throw new TypeError(NOT_A_STRING);
61
+ }
62
+ const m = prompt.match(LIT_TRIGGER_PATTERN);
63
+ if (m === null) {
64
+ return null;
65
+ }
66
+ const raw = m[1];
67
+ if (raw === undefined) {
68
+ // Unreachable: a successful match always populates capture group 1.
69
+ return null;
70
+ }
71
+ const token = raw.toLowerCase();
72
+ // Strip the optional leading boundary char so `index` points at the token's first char.
73
+ const index = (m.index ?? 0) + m[0].length - raw.length;
74
+ return { token, raw, index };
75
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@litcodex/lit-loop",
3
+ "version": "0.3.0",
4
+ "description": "LitCodex Lit-Loop runtime: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
5
+ "type": "module",
6
+ "bin": {
7
+ "litcodex-lit-loop": "./dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "directives",
12
+ "agents",
13
+ "directive.md",
14
+ "LICENSE",
15
+ "NOTICE",
16
+ "README.md",
17
+ "CHANGELOG.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.build.json",
21
+ "typecheck": "tsc --noEmit",
22
+ "test": "vitest --run"
23
+ },
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ }
27
+ }
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "litcodex-ai",
3
+ "version": "0.3.0",
4
+ "description": "Codex loop harness installer. Run `npx litcodex-ai install` to set up the LitCodex Codex platform: the bare `lit` hook and the durable lit-loop runtime.",
5
+ "keywords": ["codex", "litcodex", "lit-loop", "ai-agents", "orchestration"],
6
+ "author": "LitCodex Authors",
7
+ "license": "MIT",
8
+ "repository": { "type": "git", "url": "git+https://github.com/<OWNER_PLACEHOLDER>/litcodex.git" },
9
+ "bugs": { "url": "https://github.com/<OWNER_PLACEHOLDER>/litcodex/issues" },
10
+ "homepage": "https://github.com/<OWNER_PLACEHOLDER>/litcodex#readme",
11
+ "type": "module",
12
+ "bin": {
13
+ "litcodex": "bin/litcodex.js"
14
+ },
15
+ "files": ["bin", "dist", "model-catalog.json", "README.md", "LICENSE"],
16
+ "dependencies": {
17
+ "@litcodex/lit-loop": "0.3.0"
18
+ },
19
+ "bundledDependencies": ["@litcodex/lit-loop"],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.build.json",
22
+ "typecheck": "tsc --noEmit",
23
+ "test": "vitest --run",
24
+ "prepack": "node ../../scripts/prepack-bundle-component.mjs",
25
+ "postpack": "node ../../scripts/postpack-clean-component.mjs"
26
+ },
27
+ "engines": {
28
+ "node": ">=20.0.0"
29
+ }
30
+ }