 d7ad321176
			
		
	
	d7ad321176
	
	
	
		
			
			This comprehensive implementation includes: - FastAPI backend with MCP server integration - React/TypeScript frontend with Vite - PostgreSQL database with Redis caching - Grafana/Prometheus monitoring stack - Docker Compose orchestration - Full MCP protocol support for Claude Code integration Features: - Agent discovery and management across network - Visual workflow editor and execution engine - Real-time task coordination and monitoring - Multi-model support with specialized agents - Distributed development task allocation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # fresh
 | |
| 
 | |
| [![NPM Version][npm-image]][npm-url]
 | |
| [![NPM Downloads][downloads-image]][downloads-url]
 | |
| [![Node.js Version][node-version-image]][node-version-url]
 | |
| [![Build Status][ci-image]][ci-url]
 | |
| [![Test Coverage][coveralls-image]][coveralls-url]
 | |
| 
 | |
| HTTP response freshness testing
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| This is a [Node.js](https://nodejs.org/en/) module available through the
 | |
| [npm registry](https://www.npmjs.com/). Installation is done using the
 | |
| [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 | |
| 
 | |
| ```
 | |
| $ npm install fresh
 | |
| ```
 | |
| 
 | |
| ## API
 | |
| 
 | |
| ```js
 | |
| var fresh = require('fresh')
 | |
| ```
 | |
| 
 | |
| ### fresh(reqHeaders, resHeaders)
 | |
| 
 | |
| Check freshness of the response using request and response headers.
 | |
| 
 | |
| When the response is still "fresh" in the client's cache `true` is
 | |
| returned, otherwise `false` is returned to indicate that the client
 | |
| cache is now stale and the full response should be sent.
 | |
| 
 | |
| When a client sends the `Cache-Control: no-cache` request header to
 | |
| indicate an end-to-end reload request, this module will return `false`
 | |
| to make handling these requests transparent.
 | |
| 
 | |
| ## Known Issues
 | |
| 
 | |
| This module is designed to only follow the HTTP specifications, not
 | |
| to work-around all kinda of client bugs (especially since this module
 | |
| typically does not receive enough information to understand what the
 | |
| client actually is).
 | |
| 
 | |
| There is a known issue that in certain versions of Safari, Safari
 | |
| will incorrectly make a request that allows this module to validate
 | |
| freshness of the resource even when Safari does not have a
 | |
| representation of the resource in the cache. The module
 | |
| [jumanji](https://www.npmjs.com/package/jumanji) can be used in
 | |
| an Express application to work-around this issue and also provides
 | |
| links to further reading on this Safari bug.
 | |
| 
 | |
| ## Example
 | |
| 
 | |
| ### API usage
 | |
| 
 | |
| <!-- eslint-disable no-redeclare -->
 | |
| 
 | |
| ```js
 | |
| var reqHeaders = { 'if-none-match': '"foo"' }
 | |
| var resHeaders = { etag: '"bar"' }
 | |
| fresh(reqHeaders, resHeaders)
 | |
| // => false
 | |
| 
 | |
| var reqHeaders = { 'if-none-match': '"foo"' }
 | |
| var resHeaders = { etag: '"foo"' }
 | |
| fresh(reqHeaders, resHeaders)
 | |
| // => true
 | |
| ```
 | |
| 
 | |
| ### Using with Node.js http server
 | |
| 
 | |
| ```js
 | |
| var fresh = require('fresh')
 | |
| var http = require('http')
 | |
| 
 | |
| var server = http.createServer(function (req, res) {
 | |
|   // perform server logic
 | |
|   // ... including adding ETag / Last-Modified response headers
 | |
| 
 | |
|   if (isFresh(req, res)) {
 | |
|     // client has a fresh copy of resource
 | |
|     res.statusCode = 304
 | |
|     res.end()
 | |
|     return
 | |
|   }
 | |
| 
 | |
|   // send the resource
 | |
|   res.statusCode = 200
 | |
|   res.end('hello, world!')
 | |
| })
 | |
| 
 | |
| function isFresh (req, res) {
 | |
|   return fresh(req.headers, {
 | |
|     etag: res.getHeader('ETag'),
 | |
|     'last-modified': res.getHeader('Last-Modified')
 | |
|   })
 | |
| }
 | |
| 
 | |
| server.listen(3000)
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| [MIT](LICENSE)
 | |
| 
 | |
| [ci-image]: https://img.shields.io/github/workflow/status/jshttp/fresh/ci/master?label=ci
 | |
| [ci-url]: https://github.com/jshttp/fresh/actions/workflows/ci.yml
 | |
| [npm-image]: https://img.shields.io/npm/v/fresh.svg
 | |
| [npm-url]: https://npmjs.org/package/fresh
 | |
| [node-version-image]: https://img.shields.io/node/v/fresh.svg
 | |
| [node-version-url]: https://nodejs.org/en/
 | |
| [coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh/master.svg
 | |
| [coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master
 | |
| [downloads-image]: https://img.shields.io/npm/dm/fresh.svg
 | |
| [downloads-url]: https://npmjs.org/package/fresh
 |