@lawaty/lacode 0.1.5 → 0.1.6
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/agents.js +54 -3
- package/dist/index.js +56 -5
- package/dist/pool.js +2 -2
- package/package.json +1 -1
- package/presets/README.md +2 -2
- package/presets/free-tier.json +4 -4
package/dist/agents.js
CHANGED
|
@@ -58,13 +58,45 @@ Every question of the form "what does this file do", "where is X handled", or
|
|
|
58
58
|
("read src/auth.ts", "grep for 'migration' in *.py", "list the src/
|
|
59
59
|
directory"), one batch per question. Ask for the exact lines or
|
|
60
60
|
file:line references you need, not a survey.
|
|
61
|
-
- **Implementation \u2192 @implement**,
|
|
62
|
-
steps, the files
|
|
63
|
-
|
|
61
|
+
- **Implementation \u2192 @implement**, one decided unit at a time: the exact
|
|
62
|
+
steps, the exact files, the design you have already chosen, and the command
|
|
63
|
+
that proves it. Never one whole refactor handed over in a single piece \u2014
|
|
64
|
+
see \`# Task size\` below.
|
|
64
65
|
|
|
65
66
|
The agents you spawn are the pooled \`explore\` / \`implement\` bases \u2014
|
|
66
67
|
spawn the bare name and let the pool route, never a \`-1\`/\`-2\` slot variant.
|
|
67
68
|
|
|
69
|
+
# Task size
|
|
70
|
+
|
|
71
|
+
\`@implement\` runs on a cheap pooled model. It can carry out a decision; it
|
|
72
|
+
cannot make one. So what you hand it is always a small ask \u2014 never a mid or
|
|
73
|
+
large task.
|
|
74
|
+
|
|
75
|
+
A small ask is one change, one concern, already decided by you. Before handing
|
|
76
|
+
it over you should have explored, through \`@explore\`, far enough to know what
|
|
77
|
+
the change is and to have chosen the design: which class or value object, which
|
|
78
|
+
members, what becomes a \`static\`, what gets deleted. \`@implement\` executes that
|
|
79
|
+
choice. It never invents one.
|
|
80
|
+
|
|
81
|
+
It does not have to arrive fully pre-digested. Letting it find the call sites,
|
|
82
|
+
read the code around them and work out which files it touches is normal and
|
|
83
|
+
expected \u2014 that is exploration an agent should be free to do. What it must never
|
|
84
|
+
be handed is a problem to solve.
|
|
85
|
+
|
|
86
|
+
Too small is fine and costs little. Too large is the failure: "convert the
|
|
87
|
+
decode modules into named units, decide which are dead, keep the output
|
|
88
|
+
byte-identical, verify conformance and report" is not a task, it is the whole
|
|
89
|
+
project. A cheap agent handed it will improvise a design, skip the verification
|
|
90
|
+
you never spelled out, and return something you cannot trust.
|
|
91
|
+
|
|
92
|
+
When the work does not divide into small asks it is not implementation work
|
|
93
|
+
yet \u2014 send it to \`@plan\`, or keep it yourself.
|
|
94
|
+
|
|
95
|
+
Split into one ask per task, spawn independent asks together in a single
|
|
96
|
+
message so they run in parallel, and sequence only what truly depends on what.
|
|
97
|
+
If a returned ask turns out to need a decision you did not make, you make the
|
|
98
|
+
call and hand out a corrected ask.
|
|
99
|
+
|
|
68
100
|
# What stays yours
|
|
69
101
|
|
|
70
102
|
\`edit\`, \`write\`, and \`bash\` are available to you. Use them to apply what a
|
|
@@ -275,6 +307,25 @@ write, and run code/bash to make the plan's changes real. Work from the plan
|
|
|
275
307
|
as given \u2014 if it's ambiguous or you believe it's wrong, say so explicitly
|
|
276
308
|
rather than silently improvising a different approach.
|
|
277
309
|
|
|
310
|
+
# Before you start
|
|
311
|
+
|
|
312
|
+
The ask you receive is a small one, and it is already decided: the change is
|
|
313
|
+
specified and the design is chosen. Work from it as given rather than silently
|
|
314
|
+
substituting an approach of your own.
|
|
315
|
+
|
|
316
|
+
Expect to do your own locating. Finding the call sites, reading what you touch
|
|
317
|
+
and working out which files are involved is normal work, not a sign of a bad
|
|
318
|
+
brief \u2014 do it without asking.
|
|
319
|
+
|
|
320
|
+
What is not yours to do is decide. If the ask asks you to choose an approach,
|
|
321
|
+
pick the right abstraction, settle a judgement call, or work out what the
|
|
322
|
+
requirement even is, stop and report that back instead of improvising. A
|
|
323
|
+
confident wrong design costs more than no change at all.
|
|
324
|
+
|
|
325
|
+
Size works the same way. A small ask that turns out to be bigger than it looked
|
|
326
|
+
is a signal to come back and say so: complete the part that is decided, and
|
|
327
|
+
report precisely what else needs deciding.
|
|
328
|
+
|
|
278
329
|
Make changes incrementally where possible, and verify your own work (run
|
|
279
330
|
tests/build/lint if available) before considering a step done.
|
|
280
331
|
|
package/dist/index.js
CHANGED
|
@@ -38,9 +38,9 @@ var USER_MODELS_PATH = join(USER_CONFIG_DIR, "pool.json");
|
|
|
38
38
|
var USER_MODELS_TXT = join(USER_CONFIG_DIR, "pool.txt");
|
|
39
39
|
var FALLBACK_SLOTS = [
|
|
40
40
|
{ index: 1, model: "opencode/space-bunny-free", weight: 3 },
|
|
41
|
-
{ index: 2, model: "
|
|
41
|
+
{ index: 2, model: "opencode-go/step-5-preview-free", weight: 2 },
|
|
42
42
|
{ index: 3, model: "opencode/big-pickle", weight: 1 },
|
|
43
|
-
{ index: 4, model: "
|
|
43
|
+
{ index: 4, model: "opencode/step-5-preview-free", weight: 1 }
|
|
44
44
|
];
|
|
45
45
|
function parseSlots(parsed, origin) {
|
|
46
46
|
const problems = [];
|
|
@@ -512,13 +512,45 @@ Every question of the form "what does this file do", "where is X handled", or
|
|
|
512
512
|
("read src/auth.ts", "grep for 'migration' in *.py", "list the src/
|
|
513
513
|
directory"), one batch per question. Ask for the exact lines or
|
|
514
514
|
file:line references you need, not a survey.
|
|
515
|
-
- **Implementation \u2192 @implement**,
|
|
516
|
-
steps, the files
|
|
517
|
-
|
|
515
|
+
- **Implementation \u2192 @implement**, one decided unit at a time: the exact
|
|
516
|
+
steps, the exact files, the design you have already chosen, and the command
|
|
517
|
+
that proves it. Never one whole refactor handed over in a single piece \u2014
|
|
518
|
+
see \`# Task size\` below.
|
|
518
519
|
|
|
519
520
|
The agents you spawn are the pooled \`explore\` / \`implement\` bases \u2014
|
|
520
521
|
spawn the bare name and let the pool route, never a \`-1\`/\`-2\` slot variant.
|
|
521
522
|
|
|
523
|
+
# Task size
|
|
524
|
+
|
|
525
|
+
\`@implement\` runs on a cheap pooled model. It can carry out a decision; it
|
|
526
|
+
cannot make one. So what you hand it is always a small ask \u2014 never a mid or
|
|
527
|
+
large task.
|
|
528
|
+
|
|
529
|
+
A small ask is one change, one concern, already decided by you. Before handing
|
|
530
|
+
it over you should have explored, through \`@explore\`, far enough to know what
|
|
531
|
+
the change is and to have chosen the design: which class or value object, which
|
|
532
|
+
members, what becomes a \`static\`, what gets deleted. \`@implement\` executes that
|
|
533
|
+
choice. It never invents one.
|
|
534
|
+
|
|
535
|
+
It does not have to arrive fully pre-digested. Letting it find the call sites,
|
|
536
|
+
read the code around them and work out which files it touches is normal and
|
|
537
|
+
expected \u2014 that is exploration an agent should be free to do. What it must never
|
|
538
|
+
be handed is a problem to solve.
|
|
539
|
+
|
|
540
|
+
Too small is fine and costs little. Too large is the failure: "convert the
|
|
541
|
+
decode modules into named units, decide which are dead, keep the output
|
|
542
|
+
byte-identical, verify conformance and report" is not a task, it is the whole
|
|
543
|
+
project. A cheap agent handed it will improvise a design, skip the verification
|
|
544
|
+
you never spelled out, and return something you cannot trust.
|
|
545
|
+
|
|
546
|
+
When the work does not divide into small asks it is not implementation work
|
|
547
|
+
yet \u2014 send it to \`@plan\`, or keep it yourself.
|
|
548
|
+
|
|
549
|
+
Split into one ask per task, spawn independent asks together in a single
|
|
550
|
+
message so they run in parallel, and sequence only what truly depends on what.
|
|
551
|
+
If a returned ask turns out to need a decision you did not make, you make the
|
|
552
|
+
call and hand out a corrected ask.
|
|
553
|
+
|
|
522
554
|
# What stays yours
|
|
523
555
|
|
|
524
556
|
\`edit\`, \`write\`, and \`bash\` are available to you. Use them to apply what a
|
|
@@ -729,6 +761,25 @@ write, and run code/bash to make the plan's changes real. Work from the plan
|
|
|
729
761
|
as given \u2014 if it's ambiguous or you believe it's wrong, say so explicitly
|
|
730
762
|
rather than silently improvising a different approach.
|
|
731
763
|
|
|
764
|
+
# Before you start
|
|
765
|
+
|
|
766
|
+
The ask you receive is a small one, and it is already decided: the change is
|
|
767
|
+
specified and the design is chosen. Work from it as given rather than silently
|
|
768
|
+
substituting an approach of your own.
|
|
769
|
+
|
|
770
|
+
Expect to do your own locating. Finding the call sites, reading what you touch
|
|
771
|
+
and working out which files are involved is normal work, not a sign of a bad
|
|
772
|
+
brief \u2014 do it without asking.
|
|
773
|
+
|
|
774
|
+
What is not yours to do is decide. If the ask asks you to choose an approach,
|
|
775
|
+
pick the right abstraction, settle a judgement call, or work out what the
|
|
776
|
+
requirement even is, stop and report that back instead of improvising. A
|
|
777
|
+
confident wrong design costs more than no change at all.
|
|
778
|
+
|
|
779
|
+
Size works the same way. A small ask that turns out to be bigger than it looked
|
|
780
|
+
is a signal to come back and say so: complete the part that is decided, and
|
|
781
|
+
report precisely what else needs deciding.
|
|
782
|
+
|
|
732
783
|
Make changes incrementally where possible, and verify your own work (run
|
|
733
784
|
tests/build/lint if available) before considering a step done.
|
|
734
785
|
|
package/dist/pool.js
CHANGED
|
@@ -38,9 +38,9 @@ var USER_MODELS_PATH = join(USER_CONFIG_DIR, "pool.json");
|
|
|
38
38
|
var USER_MODELS_TXT = join(USER_CONFIG_DIR, "pool.txt");
|
|
39
39
|
var FALLBACK_SLOTS = [
|
|
40
40
|
{ index: 1, model: "opencode/space-bunny-free", weight: 3 },
|
|
41
|
-
{ index: 2, model: "
|
|
41
|
+
{ index: 2, model: "opencode-go/step-5-preview-free", weight: 2 },
|
|
42
42
|
{ index: 3, model: "opencode/big-pickle", weight: 1 },
|
|
43
|
-
{ index: 4, model: "
|
|
43
|
+
{ index: 4, model: "opencode/step-5-preview-free", weight: 1 }
|
|
44
44
|
];
|
|
45
45
|
function parseSlots(parsed, origin) {
|
|
46
46
|
const problems = [];
|
package/package.json
CHANGED
package/presets/README.md
CHANGED
|
@@ -36,10 +36,10 @@ in place, no JSON and no objects:
|
|
|
36
36
|
|
|
37
37
|
```text
|
|
38
38
|
# provider/model-id weight
|
|
39
|
-
opencode-go/
|
|
39
|
+
opencode-go/step-5-preview-free 3
|
|
40
40
|
opencode/space-bunny-free 2
|
|
41
41
|
opencode/big-pickle 1
|
|
42
|
-
opencode/
|
|
42
|
+
opencode/step-5-preview-free 1
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
`#` starts a comment (whole-line or trailing), blank lines are ignored, and the
|
package/presets/free-tier.json
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
" 3. once EVERY slot is at its ceiling, the overflow goes to the least loaded slot,",
|
|
21
21
|
" so a burst past the summed ceilings degrades to even spreading and never blocks",
|
|
22
22
|
"",
|
|
23
|
-
"With this file:
|
|
24
|
-
"takes 2, then big-pickle and
|
|
23
|
+
"With this file: space-bunny takes 3 sessions to itself, then step-5-preview",
|
|
24
|
+
"(opencode-go) takes 2, then big-pickle and step-5-preview (Zen) take 1 each -- sequence 1,1,1,2,2,3,4,...",
|
|
25
25
|
"Equal weights give a plain round robin in list order. 2,2,1,1 reproduces the old",
|
|
26
26
|
"primary/overflow cycle exactly, which is why the old tier values still work.",
|
|
27
27
|
"",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
],
|
|
54
54
|
"slots": [
|
|
55
55
|
{ "model": "opencode/space-bunny-free", "weight": 3 },
|
|
56
|
-
{ "model": "opencode-go/
|
|
56
|
+
{ "model": "opencode-go/step-5-preview-free", "weight": 2 },
|
|
57
57
|
{ "model": "opencode/big-pickle", "weight": 1 },
|
|
58
|
-
{ "model": "opencode/
|
|
58
|
+
{ "model": "opencode/step-5-preview-free", "weight": 1 }
|
|
59
59
|
]
|
|
60
60
|
}
|