feat(lib-core): biblioteca atomica @pulse-libs/core v1.0.0-beta.1
Esta commit conteudo a estrutura atomica completa:
- types: Result<T,E>, AsyncState<T>, Paginated<T>, SortConfig<T>
- utils: date, str, num, cn, debounce, throttle, storage, arr, obj
- validators: Zod schemas — email, password, uuid, url, phone, CPF/CNPJ, sanitizedStr, safeParse
- hooks: useToggle, useAsync, useDebounce, useLocalStorage, useMedia, useInterval, useOnClickOutside, useClipboard, useFetch
- components: Button, Input, Alert, Card, Spinner (atomic design pattern)
- build: tsup v8 ESM+CJS + DTS + sourcemaps — 0 erros
- tests: 57 testes 100% usuarios
- docker: multi-stage Dockerfile (node 20-alpine)
- config: vitest, tsup, tsconfig strict, .npmignore
Filosofia atomica:/utils ← /types ← /validators ← /hooks ← /components
Build: npm run build | Test: npm test | Publish: npm publish
🤖 Generated with Pulse (openclaw + nova-self-improver)
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
||||
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!--
|
||||
TaskFlow Periodic Sync — macOS LaunchAgent
|
||||
==========================================
|
||||
Label: com.taskflow.sync
|
||||
Action: Runs task-sync.mjs files-to-db every 60 seconds.
|
||||
Markdown files are canonical; DB is kept in sync automatically.
|
||||
|
||||
INSTALLATION:
|
||||
1. Copy this file to ~/Library/LaunchAgents/com.taskflow.sync.plist
|
||||
2. Replace ALL occurrences of {{workspace}} with the absolute path
|
||||
to your workspace directory (no trailing slash).
|
||||
Example: /Users/you/.openclaw/workspace
|
||||
2b. Replace {{node}} with the path to your node binary.
|
||||
Find it with: which node
|
||||
Example: /opt/homebrew/bin/node
|
||||
3. Load the agent:
|
||||
launchctl load ~/Library/LaunchAgents/com.taskflow.sync.plist
|
||||
4. Verify it is running:
|
||||
launchctl list | grep taskflow
|
||||
|
||||
LOGS:
|
||||
stdout → {{workspace}}/logs/taskflow-sync.stdout.log
|
||||
stderr → {{workspace}}/logs/taskflow-sync.stderr.log
|
||||
Create the logs/ directory if it does not exist:
|
||||
mkdir -p {{workspace}}/logs
|
||||
|
||||
UNINSTALL:
|
||||
launchctl unload ~/Library/LaunchAgents/com.taskflow.sync.plist
|
||||
rm ~/Library/LaunchAgents/com.taskflow.sync.plist
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
|
||||
<!-- Unique label for this agent -->
|
||||
<key>Label</key>
|
||||
<string>com.taskflow.sync</string>
|
||||
|
||||
<!-- Command to run -->
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>{{node}}</string>
|
||||
<string>{{workspace}}/taskflow/scripts/task-sync.mjs</string>
|
||||
<string>files-to-db</string>
|
||||
</array>
|
||||
|
||||
<!-- Run every 60 seconds -->
|
||||
<key>StartInterval</key>
|
||||
<integer>60</integer>
|
||||
|
||||
<!-- Working directory (workspace root, where PROJECTS.md and tasks/ live) -->
|
||||
<key>WorkingDirectory</key>
|
||||
<string>{{workspace}}</string>
|
||||
|
||||
<!-- Environment variables passed to the script -->
|
||||
<key>EnvironmentVariables</key>
|
||||
<dict>
|
||||
<key>OPENCLAW_WORKSPACE</key>
|
||||
<string>{{workspace}}</string>
|
||||
</dict>
|
||||
|
||||
<!-- Standard output log -->
|
||||
<key>StandardOutPath</key>
|
||||
<string>{{workspace}}/logs/taskflow-sync.stdout.log</string>
|
||||
|
||||
<!-- Standard error log -->
|
||||
<key>StandardErrorPath</key>
|
||||
<string>{{workspace}}/logs/taskflow-sync.stderr.log</string>
|
||||
|
||||
<!-- Start on load (do not wait for first interval) -->
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
|
||||
</dict>
|
||||
</plist>
|
||||
Reference in New Issue
Block a user