Claudio Ortolina
9d0c8acb04
refactor sensitive-file-guard tests to use node:test
2026-05-11 22:26:38 +01:00
Claudio Ortolina
091d5647a8
remove unneded dependency
2026-05-11 18:22:15 +01:00
Claudio Ortolina
a88c704fe5
ML-175: parse bash commands structurally via unbash
...
Replace regex-based command blocking with structural AST parsing
using unbash (zero-dependency TypeScript bash parser). The walker
collects command names only from executable positions (simple
commands, pipelines, subshells, command substitutions, control-flow
bodies), excluding arguments, comments, and quoted strings.
- Convert to directory-style extension with pinned unbash@3.0.0
- Add AST walker (ast.ts) covering 15 shell construct types
- Update blocked_commands to plain names instead of regexes
- Keep regex fallback for parse failures (degradation path)
- Path-based blocking unchanged for non-bash tools
- 41 tests cover blocked/allowed cases including false positives
2026-05-11 17:42:48 +01:00
Claudio Ortolina
5cbd988b46
Have pi format most markdown files on save
...
Avoiding skills as they can contain generated blocks
2026-05-09 19:11:13 +01:00
Claudio Ortolina
a425327162
Remove unnecessary blocked command
2026-05-09 19:01:28 +01:00
Claudio Ortolina
6f865a7b4d
ML-173: replace aws-sdk with aws4 + built-in fetch
...
Replace @aws-sdk/client-s3 (~150 transitive deps, ~14MB) with aws4
(0 transitive deps, ~40KB) and Node.js built-in fetch+crypto for
S3 ListObjectsV2 against Hetzner Object Storage.
- New s3-client.ts: SigV4 signing via aws4, regex-based XML parsing
with namespace tolerance, pagination support, 5 error categories
- 29 unit tests (node:test, zero-dependency) covering signing,
parsing, entities, missing fields, pagination, abort, errors
- Settlement guard for double done(null) on abort
- XML entity decoding and regex metacharacter escaping
- Dependency surface: 150 packages → 1 (aws4, single-file, auditable)
2026-05-09 10:46:07 +01:00
Claudio Ortolina
5162b992cd
Add error ID display and copy shortcuts to prod-errors TUI
...
Show error ID after status label in list view. Add 'c' shortcut to copy error ID from list and full stacktrace from detail view. Replace Enter-to-copy-line with 'c' copy stacktrace in detail. Show error reason in detail header instead of kind.
2026-05-08 22:43:02 +01:00
Claudio Ortolina
d3459a28f1
Update npm dependencies
...
npm:
@aws-sdk/client-s3 3.1041.0 => 3.1045.0
@smithy/config-resolver 4.4.17 => 4.5.0
@smithy/core 3.23.17 => 3.24.0
@smithy/credential-provider-imds 4.2.14 => 4.3.0
@smithy/eventstream-serde-browser 4.2.14 => 4.3.0
@smithy/eventstream-serde-config-resolver 4.3.14 => 4.4.0
@smithy/eventstream-serde-node 4.2.14 => 4.3.0
@smithy/fetch-http-handler 5.3.17 => 5.4.0
@smithy/hash-blob-browser 4.2.15 => 4.3.0
@smithy/hash-node 4.2.14 => 4.3.0
@smithy/hash-stream-node 4.2.14 => 4.3.0
@smithy/invalid-dependency 4.2.14 => 4.3.0
@smithy/is-array-buffer 4.2.2 => 4.3.0
@smithy/md5-js 4.2.14 => 4.3.0
@smithy/middleware-content-length 4.2.14 => 4.3.0
@smithy/middleware-endpoint 4.4.32 => 4.5.0
@smithy/middleware-retry 4.5.7 => 4.6.0
@smithy/middleware-serde 4.2.20 => 4.3.0
@smithy/middleware-stack 4.2.14 => 4.3.0
@smithy/node-config-provider 4.3.14 => 4.4.0
@smithy/node-http-handler 4.6.1 => 4.7.0
@smithy/property-provider 4.2.14 => 4.3.0
@smithy/protocol-http 5.3.14 => 5.4.0
@smithy/shared-ini-file-loader 4.4.9 => 4.5.0
@smithy/signature-v4 5.3.14 => 5.4.0
@smithy/smithy-client 4.12.13 => 4.13.0
@smithy/url-parser 4.2.14 => 4.3.0
@smithy/util-base64 4.3.2 => 4.4.0
@smithy/util-body-length-browser 4.2.2 => 4.3.0
@smithy/util-body-length-node 4.2.3 => 4.3.0
@smithy/util-config-provider 4.2.2 => 4.3.0
@smithy/util-defaults-mode-browser 4.3.49 => 4.4.0
@smithy/util-defaults-mode-node 4.2.54 => 4.3.0
@smithy/util-endpoints 3.4.2 => 3.5.0
@smithy/util-middleware 4.2.14 => 4.3.0
@smithy/util-retry 4.3.6 => 4.4.0
@smithy/util-stream 4.5.25 => 4.6.0
@smithy/util-utf8 4.2.2 => 4.3.0
@smithy/util-waiter 4.3.0 => 4.4.0
fast-xml-builder 1.1.5 => 1.2.0
strnum 2.2.3 => 2.3.0
@smithy/chunked-blob-reader 5.2.2 => removed
@smithy/chunked-blob-reader-native 4.2.3 => removed
@smithy/eventstream-codec 4.2.14 => removed
@smithy/querystring-builder 4.2.14 => removed
@smithy/querystring-parser 4.2.14 => removed
@smithy/service-error-classification 4.3.1 => removed
@smithy/uuid 1.1.2 => removed
xml-naming added 0.1.0
2026-05-08 18:19:43 +01:00
Claudio Ortolina
0a16b72411
Instruct LLM to use flat paths for backlog documents
2026-05-08 15:06:25 +01:00
Claudio Ortolina
3b4558ab9a
ML-165: follow-up to fix non-working uppercase shortcuts
2026-05-05 16:33:43 +01:00
Claudio Ortolina
cccd28a9f9
ML-165: implementation
2026-05-05 13:43:18 +01:00
Claudio Ortolina
bcbfe2be75
Move skills to .agents/skills
2026-05-05 07:18:08 +01:00
Claudio Ortolina
65366738a7
Add extension to format on edit
2026-05-04 21:52:03 +01:00
Claudio Ortolina
7bf89d9a1d
Run prettier on .pi folder
2026-05-04 21:21:10 +01:00
Claudio Ortolina
c24e4e8a59
fix(prod-errors): security, dedup, and correctness fixes for TUI and tools
...
- buildUrl: detect localhost/loopback addresses and default to http://
instead of silently upgrading everything to https://
- formatRelativeTime: guard against NaN for invalid ISO8601 inputs
- Fix 'q' key silently ignored in detail mode — now closes from any mode
- Extract shared retoggleFilter() to eliminate ~50 lines of duplication
between toggleResolved() and toggleMuted()
- Extract shared formatDetailLines() used by both formatErrorDetail()
(LLM tool) and buildDetailLines() (TUI) — removes ~60 duplicate lines
- Extract shared fetchApi<T>() to deduplicate HTTP error handling
between fetchErrors() and fetchError()
- renderLoading: use visibleHeight instead of full terminal rows
- List empty-state padding: name chromeLines constant
- Fix double buildDetailLines() call in detail scroll clamping
2026-05-04 14:12:15 +01:00
Claudio Ortolina
26a9469b3f
ML-164: implementation
2026-05-04 13:47:34 +01:00
Claudio Ortolina
904f540031
ML-163: implementation
2026-05-04 13:25:08 +01:00
Claudio Ortolina
7b7309b38f
Add template to work on task implementation
2026-05-04 09:46:09 +01:00
Claudio Ortolina
4f167c4f8f
Use dedicated token for pi logs access
2026-05-04 08:42:53 +01:00
Claudio Ortolina
218ddca62d
ML-160: enable llm access to production logs
2026-05-04 08:36:00 +01:00
Claudio Ortolina
51390974a8
ML-159: add cursor and visual mode to log browser
2026-05-03 22:34:50 +01:00
Claudio Ortolina
5981970039
ML-157: implementation and configuration
2026-05-03 16:33:23 +01:00
Claudio Ortolina
4e0177c69d
Offer to review plan at the end of task creation
2026-05-03 15:30:14 +01:00
Claudio Ortolina
fd90a6bfa6
Add pi extension to get production logs
2026-05-03 09:21:25 +01:00
Claudio Ortolina
42ca81b940
Add prompts for backlog-driven development
2026-05-02 20:51:59 +01:00
Claudio Ortolina
179ac35130
Add pi extension to browse database backups
2026-05-01 22:23:44 +01:00
Claudio Ortolina
870b35787f
Add pi.dev configuration
...
Requires `DEEPSEEK_API_TOKEN` env variable
2026-04-28 15:25:34 +01:00