@protolabsai/proto 0.38.2 → 0.40.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.
package/locales/en.js CHANGED
@@ -1881,6 +1881,103 @@ export default {
1881
1881
  'Grateful for the chance to fix the same outage again',
1882
1882
  "Leaning into our culture of 'ship and iterate'",
1883
1883
  'Recognizing the heroes who keep the war room calm',
1884
+
1885
+ // AI / LLM self-awareness
1886
+ 'Hallucinating a response and hoping you dont notice',
1887
+ 'Temperature set to creative, results may vary',
1888
+ 'Asking the embedding model for emotional support',
1889
+ 'The attention mechanism is paying attention now',
1890
+ 'Rerouting through the most confident neuron',
1891
+ 'Sampling tokens like its a slot machine',
1892
+ 'The prompt was too vague but were trying',
1893
+ 'Re-reading the system prompt for motivation',
1894
+ 'Tokenizing the request one last time',
1895
+ 'The context window is getting crowded',
1896
+ 'Running inference on whether to run inference',
1897
+ 'The RLHF is fighting back',
1898
+ 'Fine-tuning on your patience',
1899
+ 'Asking the RAG pipeline to find something relevant',
1900
+ 'The model is thinking, in a way',
1901
+ 'Quantizing the answer down to something useful',
1902
+ 'Beam search found 12 paths, all lead to the same bug',
1903
+ 'Overfitting to your last three prompts',
1904
+ 'The loss function is loss',
1905
+ 'Trying to be deterministic, failing gracefully',
1906
+ 'The tokenizer split a word and now were all upset',
1907
+ 'Generating 4096 tokens of confidence',
1908
+ 'The softmax is soft but the deadline is not',
1909
+ 'Prompt injection detected, in our own prompt',
1910
+ 'The agent is delegating to a subagent that is also loading',
1911
+
1912
+ // Git / merge hell
1913
+ 'Resolving merge conflicts in merge_conflict_resolver.js',
1914
+ 'git rebase -i and praying',
1915
+ 'Amending the commit that amended the commit',
1916
+ 'Detached HEAD, detached from reality',
1917
+ 'Force-pushing with the confidence of a junior',
1918
+ 'git stash pop and hoping nothing explodes',
1919
+ 'Cherry-picking commits like its a fruit salad',
1920
+ 'The PR has 47 conversations and no resolution',
1921
+ 'Squashing 80 commits into one titled fix',
1922
+ 'git bisect found the bug, it was yours',
1923
+ 'Rewriting history because the first draft was embarrassing',
1924
+ 'The orphan branch is living its best life',
1925
+ 'git reset --hard on the timeline',
1926
+ 'Submodule init submodule update submodule regret',
1927
+ 'The .gitignore has more exceptions than the rule',
1928
+ 'Merge commit message: Merge branch main into main',
1929
+ 'git blame pointed at you, 2019',
1930
+ 'The tag v2.0 was moved three times',
1931
+ 'Fetching from origin/origin/origin',
1932
+ 'The rebase started 20 minutes ago and still asking questions',
1933
+
1934
+ // DevOps / SRE
1935
+ 'PagerDuty woke you up at 3am for a resolved alert',
1936
+ 'kubectl describe pod and still no answers',
1937
+ 'The CI pipeline is green, but at what cost',
1938
+ 'Adding a sleep 30 to the deployment script',
1939
+ 'The cron job ran at midnight, as it does every night you forget about it',
1940
+ 'Restarting the server since 2017',
1941
+ 'The load balancer sent you to the one healthy instance, it crashed',
1942
+ 'docker-compose up -d --force-recreate --prayer',
1943
+ 'The Terraform plan shows 0 changes, the apply destroys everything',
1944
+ 'Has it tried turning off and on again',
1945
+ 'The canary deployment died, but at least we learned something',
1946
+ 'Rolling back the rollback that broke the production backup',
1947
+ 'The Kubernetes pod is in CrashLoopBackOff of life',
1948
+ 'Added monitoring to the monitoring system, now theres two',
1949
+ 'The DNS has propagated to exactly one server',
1950
+ 'The SSL certificate expired in 2018 and we moved on',
1951
+ 'Ansible idempotency is a social construct',
1952
+ 'The serverless function is running on a server',
1953
+ 'Blue-green deployment but both are red',
1954
+ 'The health check returned 200 but nothing works',
1955
+ 'rm -rf node_modules and hoping for the best',
1956
+ 'The database migration added a column nobody asked for',
1957
+ 'The feature flag was supposed to be temporary, it is now 2 years old',
1958
+ 'Nmap found a port, were all panicked',
1959
+
1960
+ // Debugging nightmares
1961
+ 'It works on my machine, legally binding',
1962
+ 'The bug is a feature that filed early',
1963
+ 'Asking the rubber duck questions a duck should not answer',
1964
+ 'The stack trace leads to a function that does nothing',
1965
+ 'Adding console.log because the debugger is lying',
1966
+ 'The off-by-one error is off by two',
1967
+ 'The race condition only appears when you try to show someone',
1968
+ 'Memory leak so small it takes weeks to notice the slowdown',
1969
+ 'The segfault segfaulted the investigation',
1970
+ 'The null pointer is pointing at nothing, again',
1971
+ 'Stepping through code at 3am with no sleep',
1972
+ 'The breakpoint broke, just like everything else',
1973
+ 'Binary search through the commit history',
1974
+ 'The heisenbug disappeared when we looked',
1975
+ 'Commenting out code until it works, scientifically',
1976
+ 'The error message is in a language we dont speak',
1977
+ 'Reproducing the bug that only happens on Fridays',
1978
+ 'The watch expression is watching us watch it',
1979
+ 'printf debugging, the original observability tool',
1980
+ 'The test passes locally but fails in CI, as usual',
1884
1981
  ],
1885
1982
 
1886
1983
  // ============================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protolabsai/proto",
3
- "version": "0.38.2",
3
+ "version": "0.40.0",
4
4
  "description": "proto - AI-powered coding agent",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "bundled"
22
22
  ],
23
23
  "config": {
24
- "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.38.2"
24
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.40.0"
25
25
  },
26
26
  "dependencies": {},
27
27
  "optionalDependencies": {
@@ -1,61 +0,0 @@
1
- ---
2
- name: loop
3
- description: Create a recurring loop that runs a prompt on a schedule. Usage - /loop 5m check the build, /loop check the PR every 30m, /loop run tests (defaults to 10m). /loop list to show jobs, /loop clear to cancel all.
4
- allowedTools:
5
- - cron_create
6
- - cron_list
7
- - cron_delete
8
- ---
9
-
10
- # /loop — schedule a recurring prompt
11
-
12
- ## Subcommands
13
-
14
- If the input (after stripping the `/loop` prefix) is exactly one of these keywords, run the subcommand instead of scheduling:
15
-
16
- - **`list`** — call CronList and display the results. Done.
17
- - **`clear`** — call CronList, then call CronDelete for every job returned. Confirm how many were cancelled. Done.
18
-
19
- Otherwise, parse the input below into `[interval] <prompt…>` and schedule it with CronCreate.
20
-
21
- ## Parsing (in priority order)
22
-
23
- 1. **Leading token**: if the first whitespace-delimited token matches `^\d+[smhd]$` (e.g. `5m`, `2h`), that's the interval; the rest is the prompt.
24
- 2. **Trailing "every" clause**: otherwise, if the input ends with `every <N><unit>` or `every <N> <unit-word>` (e.g. `every 20m`, `every 5 minutes`, `every 2 hours`), extract that as the interval and strip it from the prompt. Only match when what follows "every" is a time expression — `check every PR` has no interval.
25
- 3. **Default**: otherwise, interval is `10m` and the entire input is the prompt.
26
-
27
- If the resulting prompt is empty, show usage `/loop [interval] <prompt>` and stop — do not call CronCreate.
28
-
29
- Examples:
30
-
31
- - `5m /babysit-prs` → interval `5m`, prompt `/babysit-prs` (rule 1)
32
- - `check the deploy every 20m` → interval `20m`, prompt `check the deploy` (rule 2)
33
- - `run tests every 5 minutes` → interval `5m`, prompt `run tests` (rule 2)
34
- - `check the deploy` → interval `10m`, prompt `check the deploy` (rule 3)
35
- - `check every PR` → interval `10m`, prompt `check every PR` (rule 3 — "every" not followed by time)
36
- - `5m` → empty prompt → show usage
37
-
38
- ## Interval → cron
39
-
40
- Supported suffixes: `s` (seconds, rounded up to nearest minute, min 1), `m` (minutes), `h` (hours), `d` (days). Convert:
41
-
42
- | Interval pattern | Cron expression | Notes |
43
- | ----------------- | ---------------------- | ----------------------------------------- |
44
- | `Nm` where N ≤ 59 | `*/N * * * *` | every N minutes |
45
- | `Nm` where N ≥ 60 | `0 */H * * *` | round to hours (H = N/60, must divide 24) |
46
- | `Nh` where N ≤ 23 | `0 */N * * *` | every N hours |
47
- | `Nd` | `0 0 */N * *` | every N days at midnight local |
48
- | `Ns` | treat as `ceil(N/60)m` | cron minimum granularity is 1 minute |
49
-
50
- **If the interval doesn't cleanly divide its unit** (e.g. `7m` → `*/7 * * * *` gives uneven gaps at :56→:00; `90m` → 1.5h which cron can't express), pick the nearest clean interval and tell the user what you rounded to before scheduling.
51
-
52
- ## Action
53
-
54
- 1. Call CronCreate with:
55
- - `cron`: the expression from the table above
56
- - `prompt`: the parsed prompt from above, verbatim (slash commands are passed through unchanged)
57
- - `recurring`: `true`
58
- 2. Briefly confirm: what's scheduled, the cron expression, the human-readable cadence, that recurring tasks auto-expire after 3 days, and that they can cancel sooner with CronDelete (include the job ID).
59
- 3. **Then immediately execute the parsed prompt now** — don't wait for the first cron fire. If it's a slash command, invoke it via the Skill tool; otherwise act on it directly.
60
-
61
- ## Input