omnius 1.0.688 → 1.0.690
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/dist/index.js +480 -378
- package/docs/DISCOVERY.json +78 -0
- package/docs/DISCOVERY.md +2 -0
- package/docs/work-orders/runtime-health-remediation/TRACKER.md +14 -0
- package/docs/work-orders/runtime-health-remediation/WO-20-exact-session-continuation.md +88 -0
- package/docs/work-orders/runtime-health-remediation/WO-21-task-convergence-and-todo-scope.md +115 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/docs/DISCOVERY.json
CHANGED
|
@@ -33786,6 +33786,84 @@
|
|
|
33786
33786
|
}
|
|
33787
33787
|
]
|
|
33788
33788
|
},
|
|
33789
|
+
{
|
|
33790
|
+
"id": "guide.work-orders-runtime-health-remediation-wo-20-exact-session-continuation-uppercase",
|
|
33791
|
+
"kind": "guide",
|
|
33792
|
+
"title": "WO-20: Exact session continuation across exit and restart",
|
|
33793
|
+
"summary": "On 2026-09-03, the telegramtest TUI displayed the latest pentest task during startup, but the first restored model context combined a completed breach.py handoff with an unrelated, older page.tsx todo tree. The user then entered continue, and Omnius continued the stale tree instead of the task that was active before /quit.",
|
|
33794
|
+
"keywords": [
|
|
33795
|
+
"work",
|
|
33796
|
+
"orders",
|
|
33797
|
+
"runtime",
|
|
33798
|
+
"health",
|
|
33799
|
+
"remediation",
|
|
33800
|
+
"WO",
|
|
33801
|
+
"20",
|
|
33802
|
+
"exact",
|
|
33803
|
+
"session",
|
|
33804
|
+
"continuation",
|
|
33805
|
+
"md"
|
|
33806
|
+
],
|
|
33807
|
+
"maturity": "internal",
|
|
33808
|
+
"audiences": [
|
|
33809
|
+
"maintainer",
|
|
33810
|
+
"large-context-agent"
|
|
33811
|
+
],
|
|
33812
|
+
"layer": "documentation",
|
|
33813
|
+
"interfaces": [
|
|
33814
|
+
{
|
|
33815
|
+
"type": "file",
|
|
33816
|
+
"target": "docs/work-orders/runtime-health-remediation/WO-20-exact-session-continuation.md"
|
|
33817
|
+
}
|
|
33818
|
+
],
|
|
33819
|
+
"references": [
|
|
33820
|
+
{
|
|
33821
|
+
"type": "documentation",
|
|
33822
|
+
"target": "docs/work-orders/runtime-health-remediation/WO-20-exact-session-continuation.md",
|
|
33823
|
+
"relation": "canonical-artifact"
|
|
33824
|
+
}
|
|
33825
|
+
]
|
|
33826
|
+
},
|
|
33827
|
+
{
|
|
33828
|
+
"id": "guide.work-orders-runtime-health-remediation-wo-21-task-convergence-and-todo-scope-uppercase",
|
|
33829
|
+
"kind": "guide",
|
|
33830
|
+
"title": "WO-21: Task convergence and todo scope",
|
|
33831
|
+
"summary": "On 2026-09-03, a user reported that Omnius remained at task 2/8 for about 40 turns. The report did not include a screenshot or run artifact, so the exact label remains unverified. Omnius has two similar counters:",
|
|
33832
|
+
"keywords": [
|
|
33833
|
+
"work",
|
|
33834
|
+
"orders",
|
|
33835
|
+
"runtime",
|
|
33836
|
+
"health",
|
|
33837
|
+
"remediation",
|
|
33838
|
+
"WO",
|
|
33839
|
+
"21",
|
|
33840
|
+
"task",
|
|
33841
|
+
"convergence",
|
|
33842
|
+
"and",
|
|
33843
|
+
"todo",
|
|
33844
|
+
"scope",
|
|
33845
|
+
"md"
|
|
33846
|
+
],
|
|
33847
|
+
"maturity": "internal",
|
|
33848
|
+
"audiences": [
|
|
33849
|
+
"maintainer",
|
|
33850
|
+
"large-context-agent"
|
|
33851
|
+
],
|
|
33852
|
+
"layer": "documentation",
|
|
33853
|
+
"interfaces": [
|
|
33854
|
+
{
|
|
33855
|
+
"type": "file",
|
|
33856
|
+
"target": "docs/work-orders/runtime-health-remediation/WO-21-task-convergence-and-todo-scope.md"
|
|
33857
|
+
}
|
|
33858
|
+
],
|
|
33859
|
+
"references": [
|
|
33860
|
+
{
|
|
33861
|
+
"type": "documentation",
|
|
33862
|
+
"target": "docs/work-orders/runtime-health-remediation/WO-21-task-convergence-and-todo-scope.md",
|
|
33863
|
+
"relation": "canonical-artifact"
|
|
33864
|
+
}
|
|
33865
|
+
]
|
|
33866
|
+
},
|
|
33789
33867
|
{
|
|
33790
33868
|
"id": "guide.work-orders-telegram-dropbear-context-rca-workorder",
|
|
33791
33869
|
"kind": "guide",
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -558,6 +558,8 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
558
558
|
| `guide.work-orders-runtime-health-remediation-wo-18-interruption-evidence-uppercase` | WO-18 interruption lifecycle evidence | Scope: /pause, /resume, /stop, safe-boundary ownership, recovery, and stale-effect prevention. This record is independent of the shared remediation tracker and records only verified WO-18 implementation evidence. |
|
|
559
559
|
| `guide.work-orders-runtime-health-remediation-wo-19-clean-build-evidence-uppercase` | WO-19 Clean Build Evidence | WO-19 is implemented in commit 5f253c05. |
|
|
560
560
|
| `guide.work-orders-runtime-health-remediation-wo-19-clean-build-reproducibility-uppercase` | WO-19: Clean Build and Optional-Dependency Reproducibility | Status: deterministic acceptance complete Risk: medium Depends on: WO-00 |
|
|
561
|
+
| `guide.work-orders-runtime-health-remediation-wo-20-exact-session-continuation-uppercase` | WO-20: Exact session continuation across exit and restart | On 2026-09-03, the telegramtest TUI displayed the latest pentest task during startup, but the first restored model context combined a completed breach.py handoff with an unrelated, older page.tsx todo tree. The user then entered continue, and Omnius continued the stale tree instead of the task that was active before /quit. |
|
|
562
|
+
| `guide.work-orders-runtime-health-remediation-wo-21-task-convergence-and-todo-scope-uppercase` | WO-21: Task convergence and todo scope | On 2026-09-03, a user reported that Omnius remained at task 2/8 for about 40 turns. The report did not include a screenshot or run artifact, so the exact label remains unverified. Omnius has two similar counters: |
|
|
561
563
|
| `guide.work-orders-telegram-dropbear-context-rca-workorder` | Telegram Dropbear Context Engineering RCA Work Order | Observed run: /home/roko/Documents/Projects/Adjacent/telegramtest/.omnius, run id 1782873796963-i5r7mv. |
|
|
562
564
|
| `guide.work-orders-wo-am-gaps-uppercase` | Associative Memory Gap Work Orders | Generated: 2026-04-13 Source: Deep audit of multimodal associative memory systems Status: READY FOR IMPLEMENTATION |
|
|
563
565
|
| `guide.work-orders-world-class-memory-compiler-readme-uppercase` | World-Class Memory Compiler Program | Status: active implementation program Owner: Omnius orchestration and memory packages Last updated: 2026-07-13 |
|
|
@@ -309,3 +309,17 @@ deterministically repaired P0 or P1 defect.
|
|
|
309
309
|
accessibility, and mocked inference end-to-end tests.
|
|
310
310
|
- [x] WO-18 pause, stop, and resume use one durable interruption lifecycle and
|
|
311
311
|
pass cancellation, restart, ownership, external-effect, and isolation tests.
|
|
312
|
+
- [x] WO-20 exit and restart preserve one exact typed task continuation. Generic
|
|
313
|
+
context restoration cannot mix or activate unrelated historical artifacts.
|
|
314
|
+
- [x] WO-21 task convergence and todo scope prevent stale `tasks N/M` displays,
|
|
315
|
+
cross-runner todo leakage, and activity-only re-engagement.
|
|
316
|
+
- [x] Bind todo tools to immutable runner-owned sessions.
|
|
317
|
+
- [x] Clear the active persisted checklist at a fresh task boundary after
|
|
318
|
+
archival.
|
|
319
|
+
- [x] Count only typed authoritative advancement as progress.
|
|
320
|
+
- [x] Latch an advisory convergence review when the leaf frontier is static.
|
|
321
|
+
- [x] Make loop, reminder, budget, and workboard progress semantics truthful.
|
|
322
|
+
- [x] Pass deterministic race, stasis, display, typecheck, and build tests.
|
|
323
|
+
- [x] A recovered pause no longer strands its session. Submitting a new task
|
|
324
|
+
retires the superseded generation instead of refusing every later prompt,
|
|
325
|
+
while unreconciled external effects still fence admission.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# WO-20: Exact session continuation across exit and restart
|
|
2
|
+
|
|
3
|
+
## Incident
|
|
4
|
+
|
|
5
|
+
On 2026-09-03, the `telegram_test` TUI displayed the latest pentest task during
|
|
6
|
+
startup, but the first restored model context combined a completed `breach.py`
|
|
7
|
+
handoff with an unrelated, older `page.tsx` todo tree. The user then entered
|
|
8
|
+
`continue`, and Omnius continued the stale tree instead of the task that was
|
|
9
|
+
active before `/quit`.
|
|
10
|
+
|
|
11
|
+
## Root causes
|
|
12
|
+
|
|
13
|
+
- `/quit`, `/exit`, readline close, and fallback exit abort an active runner.
|
|
14
|
+
The explicit quit paths also delete `.omnius/history/pending-task.json`.
|
|
15
|
+
- Startup selects handoff, completion ledger, todo state, context chronology,
|
|
16
|
+
and visual history independently. These projections need not identify the
|
|
17
|
+
same session or run.
|
|
18
|
+
- Generic restore mutates the process-wide task session, even though the
|
|
19
|
+
restored transcript is historical orientation only.
|
|
20
|
+
- The host interprets words such as `continue` with a regular expression and
|
|
21
|
+
uses that classification to reuse a restored task identity.
|
|
22
|
+
- A resumed task is submitted as a generated wrapper. The wrapper can replace
|
|
23
|
+
the original user goal in new completion, workboard, and handoff records.
|
|
24
|
+
- Pending-task consumption checks only phase and session. It does not prove the
|
|
25
|
+
recovered run, epoch, and owner generation.
|
|
26
|
+
- Updating an existing session-context entry changes its timestamp in place,
|
|
27
|
+
but does not move it into chronological order. Tail readers can therefore
|
|
28
|
+
report an older task as latest.
|
|
29
|
+
|
|
30
|
+
## Required invariants
|
|
31
|
+
|
|
32
|
+
- [x] An active task receives a typed, atomic continuation checkpoint before a
|
|
33
|
+
resumable exit.
|
|
34
|
+
- [x] `/quit`, `/exit`, readline close, and graceful process termination pause
|
|
35
|
+
and preserve the active run. Explicit `/stop`, Ctrl+C, and double-Esc remain
|
|
36
|
+
terminal and delete the pending checkpoint.
|
|
37
|
+
- [x] A checkpoint identifies the project, original goal, session, run, task
|
|
38
|
+
epoch, owner generation, lifecycle phase, exit reason, and capture time.
|
|
39
|
+
- [x] Manual startup automatically adopts a checkpoint explicitly marked for
|
|
40
|
+
restart, without requiring an updater environment variable.
|
|
41
|
+
- [x] Exact continuation context is scoped to the checkpoint session and run.
|
|
42
|
+
A global handoff, ledger, todo tree, or transcript cannot replace it.
|
|
43
|
+
- [x] Generic context restore is orientation only. It does not bind task/todo
|
|
44
|
+
identity or mutate `OMNIUS_SESSION_ID`.
|
|
45
|
+
- [x] Continuation authority comes from typed lifecycle state or an explicit
|
|
46
|
+
command. It never comes from semantic keyword or regular-expression
|
|
47
|
+
classification of user prose.
|
|
48
|
+
- [x] The resumed runner receives the exact original user goal. Progress and
|
|
49
|
+
historical orientation remain separate context.
|
|
50
|
+
- [x] A pending checkpoint is consumed only after the runner proves the same
|
|
51
|
+
session, run, epoch, and owner generation in the running phase.
|
|
52
|
+
- [x] Session-context entries remain ordered by their effective save time after
|
|
53
|
+
merge or replacement.
|
|
54
|
+
- [x] Corrupt, cross-project, incomplete, or identity-mismatched checkpoints
|
|
55
|
+
fail closed and remain available for diagnosis unless explicitly stopped.
|
|
56
|
+
|
|
57
|
+
## Deterministic verification
|
|
58
|
+
|
|
59
|
+
- [x] Pending checkpoint round-trip and schema validation.
|
|
60
|
+
- [x] Exact four-field adoption match and one-field-at-a-time mismatch table.
|
|
61
|
+
- [x] Quit wiring has no abort/discard path for an active resumable run.
|
|
62
|
+
- [x] Restart continuation remains exact in the presence of a newer handoff,
|
|
63
|
+
higher-scoring stale ledger, unrelated todos, and unrelated visual history.
|
|
64
|
+
- [x] Generic restore cannot bind a subsequent fresh task to historical todos.
|
|
65
|
+
- [x] A resumed run persists the original goal, not a synthetic continuation
|
|
66
|
+
wrapper.
|
|
67
|
+
- [x] Session-context merge reorders the updated entry chronologically.
|
|
68
|
+
- [x] Focused CLI typecheck/build and affected tests pass.
|
|
69
|
+
|
|
70
|
+
## Delivery evidence
|
|
71
|
+
|
|
72
|
+
Implemented in the CLI session directory, TUI lifecycle coordinator, command
|
|
73
|
+
surface, and runner continuation gate. Verification on 2026-09-03:
|
|
74
|
+
|
|
75
|
+
- Focused CLI interruption, restore, session-diary, and command suites: 52
|
|
76
|
+
passed.
|
|
77
|
+
- Focused orchestrator context and interruption suites: 67 passed.
|
|
78
|
+
- Complete orchestrator suite: 2,292 passed, 14 skipped.
|
|
79
|
+
- Complete CLI suite: 2,425 passed. Two unrelated tests timed out while the CLI
|
|
80
|
+
and orchestrator suites ran concurrently; both passed alone, 35 of 35.
|
|
81
|
+
- CLI and orchestrator typechecks passed.
|
|
82
|
+
- CLI and orchestrator builds passed.
|
|
83
|
+
- A two-process, no-inference harness wrote the checkpoint in one process and
|
|
84
|
+
recovered the exact `harness-session/harness-run/epoch-3` selection in a
|
|
85
|
+
second process.
|
|
86
|
+
|
|
87
|
+
No live inference or service restart was required for this host-side
|
|
88
|
+
state-machine repair.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# WO-21: Task convergence and todo scope
|
|
2
|
+
|
|
3
|
+
## Incident
|
|
4
|
+
|
|
5
|
+
On 2026-09-03, a user reported that Omnius remained at `task 2/8` for about
|
|
6
|
+
40 turns. The report did not include a screenshot or run artifact, so the
|
|
7
|
+
exact label remains unverified. Omnius has two similar counters:
|
|
8
|
+
|
|
9
|
+
- `tasks 2/8` is the completed-leaf count in the pinned TUI checklist.
|
|
10
|
+
- `Loop intervention 2/8` is the second repetition intervention in a
|
|
11
|
+
model-tier-specific series.
|
|
12
|
+
|
|
13
|
+
The source audit found defects in both paths. These defects are sufficient to
|
|
14
|
+
produce the reported symptom even though they do not prove which counter the
|
|
15
|
+
reporter saw.
|
|
16
|
+
|
|
17
|
+
## Root causes
|
|
18
|
+
|
|
19
|
+
- A TUI process reuses one todo session across tasks. A fresh runner hides old
|
|
20
|
+
todo IDs in its private view but leaves the persisted checklist unchanged.
|
|
21
|
+
The TUI reads that unchanged file and can display a stale `tasks 2/8` row.
|
|
22
|
+
- Todo tools fall back to one mutable process-global session ID. Concurrent
|
|
23
|
+
parent, Telegram, background, and child runners can redirect one another's
|
|
24
|
+
unscoped reads and writes.
|
|
25
|
+
- Any unique non-noop tool result increments the counter used to permit turn
|
|
26
|
+
extension and brute-force re-engagement. Varying reads, searches, and error
|
|
27
|
+
text therefore masquerade as task advancement.
|
|
28
|
+
- The repeated-loop counter resets after its maximum intervention even though
|
|
29
|
+
no task state changed. Its status says that user guidance was requested, but
|
|
30
|
+
it does not create a user-input boundary.
|
|
31
|
+
- A failed `todo_write` advances the reminder clock. The visible checklist can
|
|
32
|
+
remain unchanged for ten more turns without a reminder.
|
|
33
|
+
- Small-model budget text says that a todo update resets the phase budget, but
|
|
34
|
+
the implementation resets only after a context-tree phase transition.
|
|
35
|
+
- Workboard `lastSubstantiveProgress` treats successful discovery reads as
|
|
36
|
+
progress. This conflicts with the task and completion ledgers, where a read
|
|
37
|
+
is evidence but not advancement.
|
|
38
|
+
|
|
39
|
+
## Required invariants
|
|
40
|
+
|
|
41
|
+
- [x] Every runner binds todo tools to its own immutable session scope.
|
|
42
|
+
- [x] Model-supplied todo session IDs cannot override the host scope.
|
|
43
|
+
- [x] Concurrent runners cannot redirect one another's todo reads or writes.
|
|
44
|
+
- [x] A fresh task archives the prior checklist and clears the active persisted
|
|
45
|
+
projection so the TUI, runner, REST, and Telegram views agree.
|
|
46
|
+
- [x] Only a confirmed mutation, todo transition, workboard transition,
|
|
47
|
+
assertive verifier receipt, or delivery receipt counts as authoritative task
|
|
48
|
+
progress.
|
|
49
|
+
- [x] Reads, searches, runtime-authored blocks, no-ops, and changing errors do
|
|
50
|
+
not extend the run or re-arm brute-force execution. Entry into the first
|
|
51
|
+
re-engagement cycle is deliberately not gated on prior authoritative
|
|
52
|
+
progress: that cycle is the rescue attempt for a run that has only read.
|
|
53
|
+
If it also advances nothing, re-engagement stops at cycle 2.
|
|
54
|
+
- [x] Repeated stasis creates one latched, model-visible convergence review.
|
|
55
|
+
- [x] The convergence review remains advisory. It does not infer completion,
|
|
56
|
+
manufacture a blocker, or force a user question.
|
|
57
|
+
- [x] The loop intervention maximum does not silently reset without
|
|
58
|
+
authoritative progress.
|
|
59
|
+
- [x] Todo reminders advance only after a successful state-changing write.
|
|
60
|
+
- [x] Budget exhaustion text describes the actual reset condition.
|
|
61
|
+
- [x] Workboard progress metadata uses the same authoritative distinction.
|
|
62
|
+
- [x] Todo stagnation compares completed leaves, matching the TUI counter.
|
|
63
|
+
|
|
64
|
+
## Status
|
|
65
|
+
|
|
66
|
+
Implemented and verified on 2026-09-03.
|
|
67
|
+
|
|
68
|
+
| Invariant | Implementation | Test |
|
|
69
|
+
| --- | --- | --- |
|
|
70
|
+
| Immutable runner-owned todo scope | `packages/execution/src/tools/todo-write.ts` `bindExecutionScope` | `todo-store.test.ts` "binds todo tools to a host session that model arguments cannot replace" |
|
|
71
|
+
| Concurrent runner isolation | `AgenticRunner` constructor resolves one immutable `_sessionId`; `registerTool` binds it | `todo-store.test.ts` "keeps concurrent runner-scoped todo writes isolated" |
|
|
72
|
+
| Fresh task clears the active projection | `_hidePriorSessionTodosForFreshTask` writes an empty active checklist after archival | `fresh-task-todo-boundary.test.ts` |
|
|
73
|
+
| Typed authoritative progress only | `packages/orchestrator/src/convergence-progress.ts` | `task-convergence-progress.test.ts` (8 cases) |
|
|
74
|
+
| Latched advisory convergence review | `agenticRunner.ts` convergence review block | `task-convergence-progress.test.ts` "latches one advisory review and clears it only after typed progress" |
|
|
75
|
+
| Loop intervention maximum stays latched | `Math.min(maxInterventions, loopInterventionCount + 1)` | `agenticRunner-context-behavior.test.ts` "latches the loop-intervention maximum instead of cycling it back to one" |
|
|
76
|
+
| Workboard progress uses the same distinction | `recordWorkboardToolCall` returns a status-fingerprint transition | `workboard-run-continuity.test.ts` "does not record a successful discovery read as task advancement" |
|
|
77
|
+
|
|
78
|
+
Full suites run green: `@omnius/execution` 1507 passed, `@omnius/orchestrator`
|
|
79
|
+
2303 passed (200 files, 2 skipped), `omnius` CLI 2428 passed (258 files).
|
|
80
|
+
Typecheck passes for all three packages and `pnpm -r build` completes.
|
|
81
|
+
|
|
82
|
+
The reported counter was never attributed to a specific field run. The evidence
|
|
83
|
+
request below stays open.
|
|
84
|
+
|
|
85
|
+
One correction was made during verification. An earlier draft of this work also
|
|
86
|
+
refused to enter brute-force cycle 1 whenever the primary run recorded no
|
|
87
|
+
authoritative advancement. That inverted the purpose of re-engagement and broke
|
|
88
|
+
eight existing brute-force tests, because a run that has only read is exactly
|
|
89
|
+
the run that still needs one push to act. The cycle-2 gate already bounds the
|
|
90
|
+
thrash this work order set out to stop, so the cycle-1 refusal was removed.
|
|
91
|
+
|
|
92
|
+
## Deterministic verification
|
|
93
|
+
|
|
94
|
+
- [x] Scoped todo tools ignore conflicting model-supplied session IDs.
|
|
95
|
+
- [x] Concurrent scoped todo tools write isolated session files.
|
|
96
|
+
- [x] A same-session fresh task clears the old visible todo projection after
|
|
97
|
+
archiving it.
|
|
98
|
+
- [x] Forty distinct reads produce zero authoritative progress.
|
|
99
|
+
- [x] Changing failures produce zero authoritative progress.
|
|
100
|
+
- [x] Mutations, todo transitions, workboard transitions, assertive verifiers,
|
|
101
|
+
and delivery receipts produce typed progress.
|
|
102
|
+
- [x] A convergence review latches after the configured unchanged frontier and
|
|
103
|
+
clears only after typed progress.
|
|
104
|
+
- [x] The loop intervention maximum stays latched instead of cycling to one.
|
|
105
|
+
- [x] Focused execution, orchestrator, and CLI tests pass.
|
|
106
|
+
- [x] Affected package typechecks and builds pass.
|
|
107
|
+
|
|
108
|
+
## Evidence request for exact field attribution
|
|
109
|
+
|
|
110
|
+
If the original run is available, collect only a redacted structural slice:
|
|
111
|
+
the exact counter line or screenshot, Omnius version, model/backend, launch
|
|
112
|
+
surface, incident time and timezone, session/run IDs, five turns before the
|
|
113
|
+
stall through ten turns after it, todo IDs/statuses/revisions, workboard card
|
|
114
|
+
statuses, and completion-ledger statuses. Do not copy a complete `.omnius`
|
|
115
|
+
directory because debug previews can contain user text and source fragments.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.690",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.690",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
package/package.json
CHANGED