saravanakumardb1
deff216c7e
refactor(gitea): robust manifest-based publish pipeline
...
publish-outdated-packages.sh rewritten:
- Manifest-based change detection (no registry tarball downloads)
- Single pack per package (not double-pack for check+publish)
- Deterministic content hash: normalizes version, publishConfig,
and @bytelyst/* dep versions (workspace:* resolution noise)
- Single metadata fetch per package (cached in-process)
- Fixed .npmrc overwrite bug that broke auth during publish phase
- npm_clean() helper strips all proxy env vars uniformly
release-packages.sh fixed:
- .npmrc now includes scoped registry + proxy=false for corp
- Unified corp/home publish path (no duplicated code)
- version_on_registry() uses proxy-stripped env
- Registry credential check uses proxy-stripped env
CI workflow: switched to publish-outdated-packages.sh --skip-build
2026-04-13 01:47:03 -07:00
saravanakumardb1
4e92634f62
chore(create-app): remove private flag, publish to Gitea registry
2026-04-13 00:56:13 -07:00
saravanakumardb1
7b12cba099
chore(packages): bump versions for Gitea registry publish
...
Published 60 @bytelyst/* packages to local Gitea npm registry.
create-app skipped (private: true — internal scaffolding tool).
Token regenerated with full write:package scope to fix E401.
2026-04-13 00:51:57 -07:00
saravanakumardb1
85bb860382
fix(gitea): fix publish auth — scoped registry + proxy=false in .npmrc
...
Root causes found:
1. publishConfig.registry in each package.json overrides --registry CLI
flag, causing npm to hit gitea.bytelyst.com through corp proxy.
2. Global ~/.npmrc proxy settings (NPM_CONFIG_PROXY env vars) route
localhost:3300 through the corporate proxy.
3. No .npmrc with auth token was created for npm publish to use.
Fix: generate a proper .npmrc in WORK_DIR with:
- _authToken for registry auth
- @bytelyst:registry scoped override (bypasses publishConfig)
- proxy=false + https-proxy=false on corp network
- Unified corp/home publish path (both use same .npmrc)
Token scope issue still open: current GITEA_NPM_TOKEN has read:package
but not write:package — needs regeneration in Gitea UI.
2026-04-13 00:21:13 -07:00
saravanakumardb1
54a06e227a
refactor(scripts): move 5 Gitea scripts into scripts/gitea/ subdirectory
...
Moved:
publish-local-gitea-packages.sh → gitea/publish-local-packages.sh
publish-outdated-gitea-packages.sh → gitea/publish-outdated-packages.sh
release-gitea-packages.sh → gitea/release-packages.sh
run-registry-tests.sh → gitea/run-registry-tests.sh
harden-publish-config.sh → gitea/harden-publish-config.sh
Dropped -gitea- infix (redundant with folder name).
Fixed in every moved script:
- REPO_ROOT: ../ → ../../ (one level deeper)
- Internal cross-reference comments
Updated all 10 referencing files:
- package.json (release script path)
- .gitea/workflows/ci.yml (publish step)
- 3 workflow .md files (publish-outdated usage)
- 3 devops docs (publish-local + registry-tests refs)
- 2 internal comment cross-references
2026-04-13 00:02:55 -07:00
saravanakumardb1
97c0ad9554
fix(scripts): add NETWORK-aware registry resolution to release script
...
release.sh → release-gitea-packages.sh:
1. Renamed to clearly describe purpose (Gitea npm package release, not
a generic release script).
2. Added NETWORK=corp/home detection matching publish-outdated-gitea-
packages.sh pattern:
- corp: localhost:3300 SSH tunnel + proxy env var stripping
- home: Azure VM directly via gitea.bytelyst.com or ~/.gitea_vm_host
3. Added ~/.gitea_npm_token file fallback (same as sibling scripts).
4. Corp publishes now strip HTTP_PROXY/HTTPS_PROXY/npm_config_proxy
env vars so npm reaches localhost tunnel directly instead of going
through the corporate proxy (which can't reach the tunnel).
5. Updated package.json 'release' script reference.
2026-04-12 23:56:19 -07:00
saravanakumardb1
9db3967fe1
ci: update CI/CD configuration
2026-04-12 23:51:10 -07:00
root
a7679de295
fix(release): reliable auth, per-package progress logs, clean commits
...
- Use shared ~/.npmrc via --userconfig for all npm view + publish calls
(inline --// flags are unreliable on npm v10+ for writes)
- Verify registry credentials upfront before any work begins
- Log each package status inline as scan runs (✓/⊘/→/✗) grouped by workspace
- Suppress noisy npm notice / pnpm progress output; surface only errors
- Move FAILED to its own tracked array; exit non-zero if any publish fails
- Restrict release commits to package.json / pnpm-lock.yaml / .changeset
(prevents node-compile-cache and other generated dirs being committed)
- Fix pagination bug in registry comparison (was only checking 50 packages)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 05:44:47 +00:00
root
4a0ceb17e3
chore: release version bumps [skip ci]
2026-04-13 05:00:19 +00:00
root
e2259f39ec
chore: release version bumps [skip ci]
2026-04-13 04:37:22 +00:00
root
39e48f3241
feat(llm): add FallbackLLMProvider + release pipeline script
...
- packages/llm: add FallbackLLMProvider (providers/fallback.ts) that
tries each provider in order, skipping unconfigured or erroring ones;
wire 'fallback' as a first-class LLMProviderType in factory + types
- packages/llm: improve auto-detection in factory — PERPLEXITY_API_KEY
and GEMINI_API_KEY trigger auto-selection when no explicit provider set
- scripts/release.sh: new pipeline — rebase from origin/main, build,
apply changesets, publish outdated packages to Gitea registry, push
- scripts/run-registry-tests.sh: fix Gitea URL health-check to use a
real package endpoint with auth header instead of bare registry root
- docs: mark Vercel track-B prompts B1–B3 as complete
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 04:21:12 +00:00
saravanakumardb1
85d8cef110
docs: expand Docker build corporate proxy workarounds
...
- AGENTS.md § 9: add 'Docker builds behind corporate proxy' subsection
with Alpine/corepack/strict-ssl/NODE_TLS rules
- dual-network-setup.md: replace one-liner Docker section with full
workaround table, recommended Dockerfile pattern, and key rules
2026-04-10 16:00:12 -07:00
saravanakumardb1
d1c6cf47c8
feat(palace): add @bytelyst/palace shared package — MemPalace primitives (91 tests)
...
New shared package: packages/palace/ (@bytelyst/palace)
Modules:
- types.ts — BasePalaceWingDoc, RoomDoc, MemoryDoc, TunnelDoc, KGTripleDoc, DiaryDoc
- halls.ts — HallType union, HALL_PRESETS (notelett/mindlyst/coding), hallFromLabel()
- cosine.ts — cosineSimilarity(), topKByCosine(), normalizeVector()
- dedup.ts — isContentDuplicate(), isExactDuplicate(), findClosestMatch()
- decay.ts — computeDecayedRelevance(), boostRelevance()
- extraction.ts — buildExtractionPrompt(), parseExtractionResponse(), regexFallbackExtraction()
- kg.ts — findContradictions(), mergeTriples(), isTripleCurrent()
- wakeup.ts — buildWakeUpLayers(), truncateToTokenBudget(), WAKEUP_PRESETS
- config.ts — palaceConfigSchema (Zod)
7 test files, 91 tests passing.
Consumed by NoteLett, MindLyst, and future palace-enabled products.
2026-04-10 00:57:00 -07:00
saravanakumardb1
031e910607
fix(extraction-service): review fixes — locale mapping, model passthrough, content-type validation
...
BUG 1: Azure locale derivation produced 'en-EN' (invalid) for 2-letter codes.
→ Added toAzureLocale() with 28-language mapping table (en→en-US, pt→pt-BR, etc.)
→ Exported for testing; falls back to code-CODE for unmapped languages.
BUG 2: model field from request schema was silently dropped after provider refactor.
→ Added optional model field to TranscriptionInput interface.
→ OpenAI provider now uses input.model override (falls back to config.model).
→ Route passes model through to provider.transcribe().
GAP 4: SUPPORTED_AUDIO_TYPES was defined but never validated against.
→ Route now rejects unsupported content-types with a clear error message.
→ Allows application/octet-stream (Azure Blob SAS URLs often return this).
GAP 5: Client JSDoc still said 'via OpenAI Whisper API' — now 'via configured STT provider'.
GAP 8: Azure WAV content-type hardcoded samplerate=16000 — now generic audio/wav.
Tests: 42 transcription tests (was 35), 178 total passing.
→ toAzureLocale: 4 tests (locale mapping, passthrough, fallback, case-insensitive)
→ setSTT: 1 test (singleton override)
→ model passthrough: 2 tests (mock ignores, input accepts)
2026-04-06 11:40:27 -07:00
saravanakumardb1
a77b3ff931
refactor(extraction-service): provider-agnostic transcription — OpenAI + Azure Speech + Mock
...
- TranscriptionProvider interface with transcribe() + isConfigured()
- OpenAITranscriptionProvider: Whisper API (existing behavior)
- AzureTranscriptionProvider: Azure Speech REST API for short audio
- MockTranscriptionProvider: deterministic results for testing
- Factory: getSTT() singleton with env-driven auto-detection
- STT_PROVIDER=openai|azure|mock (explicit)
- Auto-detect: AZURE_SPEECH_KEY → azure, OPENAI_API_KEY → openai, else mock
- Config: add STT_PROVIDER, AZURE_SPEECH_KEY, AZURE_SPEECH_REGION env vars
- Route refactored: audio download (common) → provider.transcribe() (swappable)
- deriveFilename() extracted to types.ts (shared by route + providers)
- 35 transcription tests (was 12), 171 total passing
- Follows same pattern as @bytelyst/llm provider abstraction
2026-04-06 11:30:22 -07:00
saravanakumardb1
f8e15880d2
feat(extraction): add transcribe() to ExtractionClient — reusable speech-to-text client
...
- TranscribeRequest/TranscribeResponse types exported from @bytelyst/extraction
- transcribe() method on ExtractionClient calls POST /api/transcribe
- 3 new client tests (correct body, optional fields, error propagation)
- Package test count: 16 → 19
2026-04-06 11:11:17 -07:00
saravanakumardb1
cc3fbf8187
feat(extraction-service): add /api/transcribe route — speech-to-text via OpenAI Whisper API
...
- POST /api/transcribe: download audio from URL, call Whisper API, return transcript
- Types: TranscribeRequestSchema (Zod), TranscribeResponse, SUPPORTED_AUDIO_TYPES
- Guards: 25MB size limit, 30s download timeout, 120s Whisper timeout, 429 rate limit
- Config: OPENAI_API_KEY, OPENAI_BASE_URL, WHISPER_MODEL env vars
- 12 new tests (schema validation + constants)
- Registered in server.ts alongside extract + task routes
2026-04-06 11:10:57 -07:00
saravanakumardb1
8e5403a47e
chore(workflows): rename publish-outdated-packages → publish-outdated-pnpm-packages
2026-04-06 10:50:15 -07:00
saravanakumardb1
151e07207b
feat(llm): add vision, streaming, and embedding support
...
- ContentPart types (TextContentPart, ImageUrlContentPart) for multipart messages
- ChatMessage.content now accepts string | ContentPart[] for vision
- EmbeddingRequest/Response types + optional embed() on LLMProvider
- chatCompletionStream() implemented in OpenAI + Azure providers (SSE parsing)
- embed() implemented in OpenAI + Azure providers
- Vision helpers: isVisionMessage, hasVisionContent, buildVisionMessage, getMessageText
- MockLLMProvider: streaming, embedding, vision content support
- 27 tests passing (up from 7)
2026-04-06 07:42:30 -07:00
43bf51a290
feat(llm): add Perplexity, Gemini providers and createFallbackChain
...
- Add PerplexityProvider (OpenAI-compatible, reads PERPLEXITY_API_KEY)
- Add GeminiProvider (Google Generative Language API adapter, reads GEMINI_API_KEY)
- Add createFallbackChain() — ordered provider chain, skips unconfigured,
aggregates errors; allows any app to replace custom LLM fallback loops
- Extend LLMProviderType with 'perplexity' | 'gemini'
- Update factory to resolve and instantiate new provider types
- Add PAID_PROVIDERS to llm-router registry (OpenAI, Perplexity) for apps
using round-robin routing alongside free-tier providers
- 27 tests covering fallback chain, new providers, error/edge cases
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 12:50:08 -07:00
saravanakumardb1
a762c5b07f
docs: add Apple App Store + Google Play Store release guides
...
- APPLE/README.md: API key details, App Store Connect setup, TestFlight workflow, submission checklist, provisioning, screenshots/metadata requirements
- GOOGLE/README.md: Play Console setup, service account config, signing keys, AAB upload, testing tracks, data safety, content rating, submission checklist
2026-04-04 23:37:25 -07:00
saravanakumardb1
05594a334f
feat(jobs): register devintelli-daily-sync cron job (0 6 * * *)
...
- Add devintelli-daily-sync handler: POST to DevIntelli backend /api/sync/daily
- Uses x-internal-key header for service-to-service auth
- Add DEVINTELLI_BACKEND_URL + DEVINTELLI_INTERNAL_API_KEY env vars
- Cron: 0 6 * * * (6am UTC daily), timeout: 5 min
- Returns triggered/skipped/totalConnections metrics from DevIntelli response
2026-04-04 23:37:25 -07:00
saravanakumardb1
89e200fa9f
feat(flags): seed devintelli feature flags (11 flags)
...
- devintelli_enabled, devintelli_scan_enabled, devintelli_daily_sync
- 6 analytics panel flags (overview, commit, pr, review, language, productivity, repo)
- devintelli_billing_enabled (disabled by default)
Aligns with backend/src/lib/feature-flags.ts defaults
2026-04-04 23:37:25 -07:00
f8949d230f
chore(admin-web): reduce high-signal lint warnings
2026-04-04 17:56:53 -07:00
631784e551
chore(admin-web): clear repo-wide lint errors
2026-04-04 17:50:20 -07:00
5e40cd1b6e
docs(runtime): record Cowork checkpoint drill-in
2026-04-04 17:29:44 -07:00
82a44c249f
feat(runtime): add Cowork checkpoint drill-in
2026-04-04 17:29:12 -07:00
9cc4bbe906
docs(runtime): record FlowMonk replay controls
2026-04-04 17:18:55 -07:00
cff76d9037
docs(ecosystem): add optional enhancement backlog
2026-04-04 17:03:37 -07:00
cedfacc408
docs(ecosystem): close hardening tracker gaps
2026-04-04 16:48:33 -07:00
066e75f0c3
docs(ecosystem): harden approvals marketplace and timeline policy
2026-04-04 16:47:20 -07:00
617d970718
docs(ecosystem): harden artifact lifecycle and event taxonomy
2026-04-04 16:45:58 -07:00
ab50831d28
docs(ecosystem): harden adoption coverage and governance
2026-04-04 16:44:52 -07:00
065c025854
docs(ecosystem): split remaining roadmap into hardening buckets
2026-04-04 16:37:27 -07:00
9e2257200c
docs(ecosystem): add roadmap summary to tracker
2026-04-04 16:36:25 -07:00
51bbeb86fd
docs(runtime): record FlowMonk live e2e verification
2026-04-04 16:33:03 -07:00
2a4d8a7b75
docs(runtime): record FlowMonk replay review
2026-04-04 15:02:26 -07:00
1c92284314
docs(runtime): clarify Cowork direct and projected states
2026-04-04 14:59:15 -07:00
ec593d722e
docs(runtime): record FlowMonk checkpoint guidance
2026-04-04 14:57:52 -07:00
1addccfeb5
docs(runtime): record FlowMonk runtime drill-in
2026-04-04 14:40:03 -07:00
e3f72fa22d
docs(runtime): record FlowMonk runtime review UI
2026-04-04 14:37:10 -07:00
e6fb20f86b
docs(runtime): record checkpoint artifact id rollout
2026-04-04 14:27:34 -07:00
59ae0e1943
feat(runtime): add checkpoint artifact id contract
2026-04-04 14:27:26 -07:00
2d86c9801a
docs(runtime): reconcile checkpoint refs and editing surfaces
2026-04-04 13:53:58 -07:00
32b46f0625
feat(cowork-service): map enriched checkpoint refs and IPC ids
2026-04-04 13:51:57 -07:00
41673125af
docs(runtime): close checkpoint and primitive follow-through
2026-04-04 12:15:40 -07:00
9aeb9bbd59
feat(runtime): add checkpoint summaries to shared and cowork surfaces
2026-04-04 12:13:46 -07:00
3330ca55cd
docs(runtime): define first conforming product plan
2026-04-04 11:52:32 -07:00
4bb8efe375
docs(runtime): define ActionTrail replay requirements
2026-04-04 11:45:12 -07:00
2ad979ce19
docs(runtime): define checkpoint and resume semantics
2026-04-04 11:44:26 -07:00