72 Commits
Author SHA1 Message Date
bendtherules 70ed0db700 fix(langfuse): exclude http wrapper spans with empty mcp_method 2026-07-08 12:24:57 +05:30
bendtherules 1201486e6a feat(langfuse): filter out non-tool-call spans from export 2026-07-08 12:16:02 +05:30
bendtherules 99e30fcae5 feat(mcp-server): enhance session metadata with method and tool information 2026-04-28 20:10:07 +05:30
bendtherules fa31c3f66e feat(langfuse): enhance trace output structure with encapsulated result data 2026-04-27 19:03:49 +05:30
bendtherules d71726205d feat(langfuse): add tool-level spans with input/output and trace-level I/O
Each MCP tool handler now sets:
- LANGFUSE_TRACE_OUTPUT_ATTR on tool spans (maps to top-level trace output)
- LANGFUSE_OBSERVATION_INPUT_ATTR and LANGFUSE_OBSERVATION_OUTPUT_ATTR
  for detailed child observation views

HTTP root span renamed to 'mcp_http_request' for consistency with stdio.
All attribute keys use constants from langfuse-transport.ts.
2026-04-27 18:56:50 +05:30
bendtherules 54bc20cb7f feat(langfuse): add tool-level spans with input/output to traces
Wrap each MCP tool handler in withSpan()/withSpanContext() to create
individual named spans per tool call:
- ask262_search_spec_sections
- ask262_get_section_content
- ask262_evaluate_in_engine262

Each span includes:
- langfuse.observation.input: JSON of tool arguments (query, sectionIds, code)
- tool name and relevant metadata as span attributes

This makes the Langfuse trace hierarchy show which MCP tool was called
and what input it received, nested under the root HTTP/stdio request span.
2026-04-27 18:31:25 +05:30
bendtherules 627b80008e feat(langfuse): add opt-in Langfuse observability integration
Add Langfuse as an OTel trace transport for MCP request lifecycle tracking.

Changes:
- New src/lib/langfuse-transport.ts: initializes LangfuseSpanProcessor when
  ASK262_LANGFUSE_ENABLED=true with valid credentials
- src/lib/tracing.ts: add metadata to TraceContext, propagate it to child spans,
  use startActiveSpan for proper OTel context, add setupTracing() entry point,
  add getSessionMetadata() for version/transport metadata
- src/lib/logger.ts: include TraceContext.metadata in JSON log mixin
- src/mcp-server-{http,stdio}.ts: call setupTracing() at startup, pass
  version/transport metadata through withSpan/withSpanContext
- src/lib/fireworks-embeddings.ts: wrap API calls in withSpan() with gen_ai
  attributes for Langfuse generation/cost tracking
- .env.example: add LANGFUSE_* configuration variables
- AGENTS.md: document Langfuse integration
- package.json: add @langfuse/tracing, @langfuse/otel, @opentelemetry/sdk-node
2026-04-27 18:31:19 +05:30
bendtherules 40b439307e refactor(logger): console level matches file level, remove getConsoleLogLevel
Simplify logger by removing getConsoleLogLevel() and LOG_LEVEL_VALUES.
When ASK262_LOG_CONSOLE=true, console output uses the same level as
file logging (ASK262_LOG_LEVEL).
2026-04-27 17:03:07 +05:30
bendtherules 30cd83f6d4 fix(logger): make console logging opt-in via ASK262_LOG_CONSOLE
Console output is now disabled by default. Set ASK262_LOG_CONSOLE=true
to enable pretty-printed logs routed to stderr. This prevents:
- Stdio MCP protocol corruption from stdout noise
- Noisy test output during bun test runs

Also fixes misleading comments about HTTP/stdio log level defaults.
2026-04-27 16:59:16 +05:30
bendtherules af1daab2a8 fix(tests): update console output expectations to include quotes for string values 2026-04-27 16:47:11 +05:30
bendtherules 9b49d92cb8 fix(evaluate): use engine262 inspect() for console output
Replace naive manual .stringValue()/.value fallback with engine262's
inspect() function so console.log outputs readable strings instead of
raw engine262 internal objects.

Closes #5
2026-04-27 16:41:07 +05:30
bendtherules 8c3cff4ea0 fix: update Ollama embedding model version to 8b in code and documentation 2026-04-23 12:07:23 +05:30
bendtherules adcbdc91c4 Add ask prompt and metadata for tool orchestration guidance 2026-04-22 19:01:43 +05:30
bendtherules c2011173fb Fix prompt syntax 2026-04-22 18:54:35 +05:30
bendtherules 83719ee47b Improve tests 1 2026-04-22 18:00:49 +05:30
bendtherules fe9d4db9ac Improve prompt 3 2026-04-22 18:00:35 +05:30
bendtherules c481d41871 Improve prompt 2 2026-04-22 17:50:41 +05:30
bendtherules 5cf5c4b66e Improve prompt 2026-04-22 17:50:23 +05:30
bendtherules fcfe476928 test: strengthen getSectionContent recursive child section coverage
- Assert exact section count (2) instead of loose > 0 check
- Verify section ordering: requested first, children after
- Assert child sectionTitle matches mock data
- Add negative test: children excluded when recursive=false
2026-04-22 13:49:29 +05:30
bendtherules ee233859a7 fix(agent-tools): include recursively fetched child sections in output
Previously when recursive=true, child sections were fetched into sectionsData
but never included in the returned sections array. Now child sections are
properly appended to the output when recursive fetching is enabled.

- Refactor section building from .map() to for..of for clarity
- Add logic to append child sections not in original request
- Add test coverage for recursive child section inclusion
2026-04-22 13:43:13 +05:30
bendtherules 9578502bca Add basic logging 2026-04-22 12:47:17 +05:30
bendtherules 204b12d5f7 fix(agent-tools): normalize childrensectionids handling and update tests for consistency 2026-04-22 12:22:35 +05:30
bendtherules 3649718b77 refactor(mcp): change HEAD endpoint to middleware for improved route handling 2026-04-22 11:03:45 +05:30
bendtherules a92546ace4 feat(mcp): add HEAD route for health probe and include it in CORS allowMethods 2026-04-22 10:42:16 +05:30
bendtherules ae76111854 Merge branch 'inspector' 2026-04-21 17:40:19 +05:30
bendtherules 2d1580ddc5 refactor(agent-tools): replace partIndex/totalParts with childrenSectionIds in getSectionContent
The getSectionContent tool schema and implementation now use `childrenSectionIds` (array of strings) instead of the previous pagination fields `partIndex` and `totalParts`. Updated Zod schema, output types, data handling, and returned objects accordingly. This change simplifies section handling by focusing on child section relationships rather than pagination.
2026-04-21 16:20:22 +05:30
bendtherules 0c2365425a style(server): reformat 2026-04-21 16:20:13 +05:30
bendtherules 962e9086dc Merge pull request #1 from bendtherules/inspector
Add inspector route
2026-04-21 13:07:53 +05:30
bendtherules fad74cad57 feat: prioritize COOLIFY_URL over MCP_PUBLIC_URL for inspector auto-connect URL
Added fallback to `process.env.COOLIFY_URL` before `MCP_PUBLIC_URL` when constructing the public URL for the MCP inspector, ensuring the correct base URL is used in environments where COOLIFY_URL is set.
2026-04-21 12:16:53 +05:30
bendtherules a2c57d4da0 refactor: move MCP endpoint above inspector for proper route priority
- Define /mcp endpoint before mounting inspector at /
- Ensures specific routes are matched before catch-all
- Prevents inspector from intercepting MCP requests
2026-04-21 09:06:17 +05:30
bendtherules 8911fb76aa fix: deduplicate section IDs in evaluateInEngine262 2026-04-20 19:09:44 +05:30
bendtherules 35e8fadca2 Add mcp-use/inspector route 2026-04-20 18:33:44 +05:30
bendtherules 0334c5836b getSectionContent - allow multiple sectionids 2026-04-20 18:32:59 +05:30
bendtherules a26f90cef9 refactor(searchSpecSections): remove content field from result
- Eliminated `content` property from `searchSpecResultSchema` and output mapping.
- Updated `toolMetadata` description to reflect that only section references are returned and content must be fetched via `ask262_get_section_content`.
- Adjusted TypeScript code accordingly.
2026-04-20 18:07:54 +05:30
bendtherules 00b6924cea fix(server): bind server to all interfaces for Docker compatibility 2026-04-18 11:18:01 +05:30
bendtherules 23e22f17ec chore: add detailed logs to evaluateInEngine262.runner.mjs
- Insert console.error statements to trace loading, initialization, execution, and mark collection.
- Log creation of agent and realm, trace start/stop, and code execution progress.
- Output captured mark count.
- Simplify fatal error handling with a single error message variable and console.error output.
2026-04-17 15:20:19 +05:30
bendtherules 2cfbe90c26 feat(server): add DEFAULT_PORT constant and use it for server port configuration 2026-04-16 17:16:53 +05:30
bendtherules f2c21cce6c refactor(searchSpecSections): rename score to vectorDistance, update schema and usage (breaking change) 2026-04-16 13:51:51 +05:30
bendtherules df5161ba86 feat: Add env support + small fixes 2026-04-16 13:18:39 +05:30
bendtherules 385f609e7b feat: Support Fireworks embedding for ingest and tool 2026-04-16 13:06:25 +05:30
bendtherules db0e249874 Add mcp http server 2026-04-16 11:51:24 +05:30
bendtherules 0cab20d6e4 feat(mcp-server): suggest recursive section content retrieval
Add recursive:true flag to ask262_get_section_content call to retrieve nested sections.
2026-04-14 19:29:34 +05:30
bendtherules ff7b155e9a docs(mcp-server): update description to clarify JavaScript internals explanation 2026-04-14 19:26:46 +05:30
bendtherules a37292fb07 refactor: simplify question argsSchema definition in mcp-server.ts by collapsing multiline Zod schema into a single line. 2026-04-14 19:24:49 +05:30
bendtherules f8180dda42 feat(mcp-server): add Zod schema for prompt arguments, rename ask262 prompt to ask, and enhance orchestration guidance text. 2026-04-14 19:24:20 +05:30
bendtherules 4a6347807c feat: Add prompt to mcp server 2026-04-14 19:08:24 +05:30
bendtherules a7b2d617a3 refactor(mcp-server): resolve STORAGE_DIR to absolute path using __dirname
- Import path and fileURLToPath for path resolution.
- Rename imported STORAGE_DIR to STORAGE_DIR_REL.
- Compute STORAGE_DIR as an absolute path relative to the script’s directory.
2026-04-14 18:24:33 +05:30
bendtherules 5946daa29e Fix: bin file in package.json 2026-04-14 18:21:14 +05:30
bendtherules 96d8f9047b feat(server): allow Ollama custom via OLLAMA_HOST env var
Update README to specify pulling the `qwen3-embedding:0.6b` model and document the optional `OLLAMA_HOST` environment variable. Adjust server code to import `EMBEDDING_MODEL`, use it for Ollama embeddings, and pass `process.env.OLLAMA_HOST` as the base URL.
2026-04-14 17:48:13 +05:30
bendtherules c239e28119 chore: remove obsolete config.json references
Deleted the `config.json` entry from the package file list and removed the corresponding `CONFIG_FILE` constant, cleaning up unused configuration references.
2026-04-14 17:17:26 +05:30